我知道我可以通过使用FORCE INDEX (abc)关键字来改变MySQL执行查询的方式.但有没有办法改变执行顺序?
我的查询如下所示:
SELECT c.*
FROM table1 a
INNER JOIN table2 b ON a.id = b.table1_id
INNER JOIN table3 c ON b.itemid = c.itemid
WHERE a.itemtype = 1
AND a.busy = 1
AND b.something = 0
AND b.acolumn = 2
AND c.itemid = 123456
Run Code Online (Sandbox Code Playgroud)
我有一个关键用于我使用的每个关系/约束.如果我在这个语句上运行解释,我看到mysql首先开始查询c.
id select_type table type
1 SIMPLE c ref
2 SIMPLE b ref
3 SIMPLE a eq_ref
Run Code Online (Sandbox Code Playgroud)
但是,我知道在命令中查询 a -> b -> c会更快(我已经证明了)有没有办法告诉mysql使用特定的顺序?
更新:我知道这a -> b -> c更快.
上面的查询需要1.9秒才能完成并返回7行.如果我将查询更改为
SELECT …Run Code Online (Sandbox Code Playgroud) 有没有办法确定mysql索引是否完全适合可用内存?如果是这样,我将如何: