Ваши запросы выбора первые десять строк столкнулись, которые удовлетворяют условиям запроса. Первая версия может занимать первые десять строк. Это должно быть довольно быстро.
При добавлении предложения where
запрос должен искать по всем строкам, пока не найдет те, которые соответствуют предложению where
. В большой таблице, где несколько строк удовлетворяют условию, это может потребовать чтения большого количества данных. Принимая много и много времени.
Решение является индексом. Если добавить индекс TIMESTAMP
, то этот запрос будет работать быстрее:
двигатель
create index mytable_timestamp on mytable(timestamp);
Запрос может использовать индекс для быстрого поиска строк, которые удовлетворяют условию where
дизъюнкцию.
Кстати, полезно использовать форматы «YYYY-MM-DD» для констант даты, особенно потому, что они соответствуют стандарту ISO для дат (и поэтому поддерживаются большинством баз данных). Правильной формой будет '2013-07-01'
.
Причина в том, что ваш запрос должен отфильтровать некоторые данные, прежде чем он сможет сделать топ 10. – Incognito
Что такое решение, оно действительно медленное, как мертвое. – abidkhan303