У меня проблема, что я не в состоянии понять .. У меня есть два запроса (база данных MySQL, только один стол со всеми данными СРВ):Звездочка корд проблемы производительности MySQL запросов
SELECT * FROM cdr WHERE userfield LIKE 'audio:%'
AND (calldate >= '2016-10-26 00:00:00'
AND calldate <= '2016-10-26 23:59:59')
AND duration > 8
ORDER BY uniqueid DESC LIMIT 200 OFFSET 0;
, который работает в 0,05 секунды и еще один:
SELECT * FROM cdr WHERE userfield LIKE 'audio:%'
AND (calldate >= '2016-10-26 15:00:00'
AND calldate <= '2016-10-26 16:00:00')
AND duration > 8
ORDER BY uniqueid DESC LIMIT 200 OFFSET 0;
который проходит в 39.12 секунд !! (обратите внимание, что единственная разница в полях calldate)
Я действительно мало знаю о производительности в MySQL, поэтому я не знаю, с чего начать, может быть, проблема с индексом?
Спасибо, EXPLAIN это хорошее начало, но в данном случае это только одна таблица, так что я не могу играть много с планом выполнения. – Soborno
Я раньше не использовал EXPLAIN, но для того, что я вижу в этом случае, есть только одна строка, а поле возможных_keys и keys совпадает с моим текущим индексом (один над столбцом calldate), поэтому я не знаю действительно что делать (хотя есть поле, которое я не получаю, это поле «Дополнительно», в котором говорится «Использование где: с помощью файлового управления») – Soborno
«Использование filesort» означает, что у вас нет места в памяти для ваших временных таблиц. У вас есть увеличение буфера для сортировки (зависит от типов вашего типа таблицы). – arheops