У меня есть запросMysql индексирование и присоединяется к
SELECT `a`.restid, `b`.`name` AS execname, `c`.`dept_name`
FROM `tk_ticket` AS a
INNER JOIN `tk_acp_users` AS b ON `a`.`exec_id` = `b`.`id`
INNER JOIN `tk_ticket_dept` AS c ON `a`.`dept_id` = `c`.`dept_id`
WHERE `a`.`dept_id` IN(9,11)
AND `a`.`status` = 0
ORDER BY `a`.`date` DESC, `a`.`dept_id`
Explain выход
1 SIMPLE a ALL exec_id_2 5391 Using where; Using filesort
1 SIMPLE b eq_ref PRIMARY PRIMARY 2 tk_new_db.a.exec_id 1
1 SIMPLE c eq_ref PRIMARY PRIMARY 1 tk_new_db.a.dept_id 1 Using where
Когда я запускаю объяснить я получаю полное сканирование таблицы для таблицы а, как я предотвратить это я добавлен ключ (exec_id, dept_id, status), но этот индекс не рассматривается.
Что о первичных ключах? –
Можете ли вы опубликовать вывод плана объяснения? –
Я думаю, что «ORDER BY' a'.'date' »вызывает полное сканирование таблицы. Нет времени проверять его, так что это просто слепое предположение, извините. – Timur