Я пытаюсь оптимизировать свои mysql-запросы, чтобы избежать использования временных файлов с использованием filesort. Я мог бы помочь. Первый; вот объяснитьИспользование временных, используя filesort плохая идея в mysql?
Вот на запрос
select pf.*,m.login,m.avatar
from profile_friends pf, members m
where pf.friend_id = m.id and pf.member_id = 16586
order by m.lastLogin desc
limit 0,24;
mysql> EXPLAIN select pf.*,m.login,m.avatar from profile_friends pf, members m where pf.friend_id = m.id and pf.member_id = 16586 order by m.lastLogin desc limit 0,24;
+----+-------------+-------+--------+-----------------------------------------------------+-----------------+---------+--------------------------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+-----------------------------------------------------+-----------------+---------+--------------------------+------+----------------------------------------------+
| 1 | SIMPLE | pf | ref | member_id_index,friend_id_index | member_id_index | 4 | const | 160 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | m | eq_ref | PRIMARY,member_id_privacy_index,id_last_login_index | PRIMARY | 4 | mydb.pf.friend_id | 1 | Using where |
Есть 2 таблицы, связанные. ProfileFriends (pf) и члены (m). Этот запрос просто пытается найти «последних» 24 друзей для этого конкретного идентификатора участника. Последние средства сортируются по дате LastLogin.
Thanks
+1 Да, для 160 строк MySQL может даже хранить временную таблицу в памяти, не записывая ее на диск. «Filesort» немного вводит в заблуждение, это означает, что он сортирует без использования индекса. –