Увеличивает ли ограничение SQL-запроса после заказа время выполнения?

#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 .