Если это действительно узкое место и выжимание скорости из подсчета стоит кода, который не так хорош, как функциональные решения, вам будет непросто обойти циклы for
в современных движках javascript. В моих тестах это примерно вдвое быстрее, чем при использовании reduce()
:
var array = [["a", "b"],["c", "d"],["b", "d"],["c", "a", "b"], ["a", "b", "c", "d"]];
let counts = new Map()
for (let i = 0; i < array.length; i++){
for (let j = 0; j < array[i].length; j++){
let n = counts.get(array[i][j]) || 0
counts.set(array[i][j], n + 1)
}
}
JSperf Тест здесь
Последняя строка имеет самый высокий идентификатор? Если так, я думаю, что это работало бы:
SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)
MySQL действительно позволяет, подвыбирает в текущей версии, правильно?
Однако в большинстве случаев это, вероятно, работало бы лучше, если бы Вы выбрали все строки и затем фильтровали нежелательные данные в Вашем приложении.
ВЫБЕРИТЕ ОТЛИЧНУЮ таблицу t1 t1.columns FROM
Таблица t2 INNER JOIN НА t1.id <t2.id
По моему опыту, MySQL любит эту технику, возвращаясь несколько версий.