gpt4 book ai didi

Mysql 索引和连接

转载 作者:行者123 更新时间:2023-11-29 00:47:50 26 4
gpt4 key购买 nike

我有一个问题

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`

解释输出

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

当我运行解释时,我对表 a 进行了全表扫描,我如何防止这种情况发生我添加了一个键(exec_id、dept_id、status),但没有考虑这个索引。

最佳答案

我不认为 MySQL 可以在这里使用 (exec_id,dept_id,status) 上的索引,因为你的 WHERE 子句中没有 exec_id。尝试在 (dept_id,status) 上添加一个索引,并可能在 (exec_id) 上为 JOIN 添加一个单独的索引。参见 http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html

关于Mysql 索引和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com