Мне отчаянно нужно что-то ускорить этот запрос!Как ускорить запрос mysql
Это вопрос, как добавить индексы для его ускорения и что я могу изменить, чтобы сделать запрос намного быстрее?
Это фактический запрос, выполненный в phpmyadmin.
Отображение строки 0 - 6 (7 Всего запросов занял 6.4767 сек)
Это тот же запрос, но я использую UNION ALL, чтобы отобразить все результаты:
Отображение строки 0 - 29 (23074 Всего запросов занял 4.0590 сек)
SELECT `location2` as `location`, '2' as `number`
FROM `properties`
WHERE `price_from` BETWEEN 0 AND 999999
AND `country` = 'spain'
union
SELECT `location3` as `location`, '3' as `number`
FROM `properties`
WHERE `price_from` BETWEEN 0 AND 999999
AND `location2` = 'spain'
union
SELECT `location4` as `location`, '4' as `number`
FROM `properties`
WHERE `price_from` BETWEEN 0 AND 999999
AND `location3` = 'spain'
union
SELECT `location5` as `location`, '5' as `number`
FROM `properties`
WHERE `price_from` BETWEEN 0 AND 999999 AND
`location4` = 'spain'
union
SELECT `location6` as `location`, '6' as `number`
FROM `properties`
WHERE `price_from` BETWEEN 0 AND 999999
AND `location5` = 'spain'
Можете ли вы показать план выполнения? Есть ли указатель на 'price_from' и (возможно, что более важно)' country'? –
Как вы хотите, чтобы я показал план выполнения? Я новичок в индексах, и я не уверен, как проверить, добавлен ли индекс в порядке или нет? Я добавил некоторые индексы из phpmyadmin, но я не уверен, правильно ли я сделал это. Обычным запросом для всего БД является следующее: «Показывать строки 0 - 29 (всего 36984, запрос занял 0.0452 сек)», поэтому он загружается довольно быстро, я просто не понимаю, почему этот запрос так долго загружается. – Kev
Это может помочь, возможно, http://dba.stackexchange.com/questions/24780/mysql-optimize-union-with-order-by-in-inner-queries –