Я бегу запрос (с 3 минуты, чтобы выполнить) -Как избежать временной таблицы в sql-запросе?
SELECT c.eveDate,c.hour,SUM(c.dataVolumeDownLink)+SUM(c.dataVolumeUpLink)
FROM cdr c
WHERE c.evedate>='2013-10-19'
GROUP BY c.hour;
с объяснить план -
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c ALL evedate_index,eve_hour_index 31200000 Using where; Using temporary; Using filesort
Я использую таблицу (MyISAM) -
Первичный ключ (id, evedate),
с еженедельными 8 перегородками с ключом,
индекс key-on evedate,
Составной указатель на evedate, час.
Я изменил параметры настройки MySQL из my.ini как (4 Гб RAM) -
tmp_table_size = 200M
key_buffer_size = 400M
read_rnd_buffer_size = 2М
Но все же его использование временной таблицы и сортировки файлов. Пожалуйста, дайте мне знать, что я должен сделать, чтобы исключить это.
EDIT:После добавления нового составного индекса (evedate, MSISDN)
Я нашел некоторые изменения в нескольких запросах они не были с помощью любого временного случая, даже в приведенном выше запросе, если я опускаю группу по п , не используя временную таблицу.
спасибо.
ОТ: http://www.mysqlperformanceblog.com/2009/03/05/what-does-using-filesort-mean-in-mysql/ В любое время сортировка не может быть выполнена из индекса, это файловый центр. Он не имеет ничего общего с файлами. Filesort следует называть «сортировкой». Он быстро сортируется в глубине души. – Damodaran
, но как насчет временного файла? Я слышал, что временный файл вызывает медленный запрос, мой предыдущий запрос занимает 4 минуты. – Aamir
создать ссылку sqlfiddle с образцом данных. – Damodaran