Оптимизация запроса на выбор с лимитом и порядком - PullRequest
1 голос
/ 20 апреля 2011

Вот мой запрос:

select * from table order by timestamp desc limit 10

это занимает слишком много времени по сравнению с

select * from table limit 10

Как мне оптимизироватьпервый запрос, чтобы приблизиться к производительности второго запроса.

ОБНОВЛЕНИЕ: У меня нет контроля над сервером БД, поэтому я не могу индексировать столбцы для повышения производительности.

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Создать индекс на timestamp.

3 голосов
/ 08 мая 2011

Quassnoi верен - вам нужен индекс для отметки времени.

Тем не менее, если ваше поле отметки времени разумно отображает ваш первичный ключ (например, поле date_created или invoice_date), вы можете попробовать этот обходной путь:

select *
from (select * from table order by id desc limit 1000) as table
order by timestamp desc limit 10;
0 голосов
/ 21 апреля 2011

@ Нишан прав.Вы мало что можете сделать.Если вам не нужен каждый столбец в таблице, вы можете получить несколько миллисекунд, явно запросив нужные столбцы

...