Как я понимаю - это плата за многомерность. В тех СУБД, с которыми я работал такой же эффект, когда хочешь посчитать количество значений поля. Грубо говоря COUNT(Record<2.M>) он как бы есть, но лучше его не использовать вот прям так, в лоб, на каждый чих.
Ваш вариант кода с JS я тоже погонял. Скорость, конечно, впечатляет. Но там по памяти получается в 3 раза больше, чем ваш код с lua.
Чудес всё равно не бывает. Или память, или ЦПУ.