id | foo | bar
--------------
0 | 0 | ...
1 | 1 | ...
2 | 2 | ...
3 | 0 | ...
4 | 2 | ...
Мне нужны все уникальные значения foo, но не «0», что очень часто.Что происходит быстрее: SELECT DISTINCT или WHERE foo! = 0?
Который быстрее?
SELECT foo FROM `table` WHERE foo != 0
или
SELECT DISTINCT foo FROM `table`
Последнее будет держать 0, но будет удален в PHP.
На моем сервере оба были достаточно быстро, но один из этих двух вариант может быть теоретически быстрее :)
В общем DISTINCT стоит дорого.Но для того, чтобы действительно это увидеть, вам нужно 100 k + rows.Also в зависимости от вашего распределения данных, даже первый может быть .low, но, как правило, SELECT DISTINCT без WHERE будет медленным (er) – Mihai
Я смущен. В вашем наборе данных вы знаете, что ненулевые значения DISTINCT или нет? – Strawberry
Всё зависит. например, если у вас есть указатель на foo. Но у вас есть хороший шанс, что это просто не имеет значения, так как связь между вашей программой и базой данных часто медленнее, чем разница. – Meier