查询1:
SELECT cid,
dl
FROM chal
WHERE cid IN (
SELECT cid
FROM c_users
WHERE uid = 636587
);
查询2:
SELECT chal.cid AS cid,
chal.dl AS dl
FROM chal,
c_users
WHERE uid = 808
AND chal.cid = c_users.cid;
cid是chal中的主键 cid和uid在c_users中索引,cid不唯一;
上面的查询哪个更好?
解释一下下面的内容
查询 1 使用两种类型的索引,即 ALL 和 index_subquery
查询2使用两种类型的索引,即ALL和ref
我想知道为什么两个查询都说 ALL 作为索引类型,尽管 cid 是表 chal 中的主键。
最佳答案
cid 是否已在 c_users 中建立索引?如果不是,您可以保证在此处进行全表扫描(也称为“ALL”)。
关于Mysql查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2356714/