#sql #performance
#sql #Производительность
Вопрос:
Будет ли второй запрос выполняться значительно быстрее, чем первый?
SELECT *
FROM table
ORDER BY timestamp;
SELECT *
FROM table
ORDER BY timestamp
LIMIT 100;
Если нет, то какой самый быстрый способ получить n
последние данные из N
записей where n << N
?
Комментарии:
1. Значительно, может быть, или, может быть, нет, в зависимости от вашего определения
"significant"
. Все зависит от количества строк в таблице. Какой процент всех строк равен 100 строкам? Это 1%, 10%, 50%? Если 100 строк составляют 0,1% содержимого всей таблицы, то, скорее всего, да, это будет значительно (заметно) быстрее. В любом случае, как и в любой задаче, ориентированной на производительность, правильный ответ: это зависит . И есть много других факторов, которые могут повлиять на это.2. Это самый быстрый способ получить результат.
3. Проверьте план выполнения
4.@RaduGheorghiu Спасибо за ваш ответ. Тогда, я думаю, мой следующий вопрос будет: почему? Если
n = 100
иN = 1 000 000
первый запрос будет выполнен соO(nlog(n))
временем. Во втором случаеLIMIT
не помогает, все строки все равно нужно сортировать. Если нет каких-либо других шагов оптимизации? Например, я могу себе представить, что еслиn << N
время вызова может быть быстрееmax
n
, чем сортировать все
Ответ №1:
Если вам нужно повысить скорость этого, добавьте index on timestamp
.