У меня есть таблица с 1 миллионной записью, и я спроектировал 2 запроса.
индекс таблицы:
id = primary
bedroom = index
elevator = index
pricemeter = index
dateadd = index
Я хочу знать, почему этот запрос:
SELECT
*
FROM (
SELECT
*
FROM `p_apartmentbuy`
WHERE
`sqm` > 100
AND `bedroom` > 1
AND `elevator` = 1
AND `pricemeter` < 5999999
ORDER BY `id` DESC
LIMIT 0, 30
) AS `alias`
ORDER BY `id` DESC, `dateadd` DESC
Это намного быстрее, чем этот:
SELECT
*
FROM `p_apartmentbuy`
WHERE
`sqm` > 100
AND `bedroom` > 1
AND `elevator` = 1
AND `pricemeter` < 5999999
ORDER BY `id` DESC, `dateadd` DESC
LIMIT 0, 30
Первый запрос занял 0,0027 с, а второй запрос - 5,6848 с.Оба результата совпадают с другими, и переменные в предложении where являются примерами.
EXPLAIN для быстрого запроса: 
EXPLAIN для медленного запроса: 