Mysql查询优化

标签 mysql optimization explain

查询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/

相关文章:

javascript - 检测 Javascript 内存泄漏和优化代码

mysql - Mysql解释查询不一样测试与本地

mysql - 为什么 MySQL 不使用索引来连接单列(没有 where 或 group by)?

php - 计算单个查询中另一个表的行数

mysql - 如何在 Ruby MySQL 驱动程序中从 ".my.cnf"读取用户名/密码?

mysql - sql 中的右侧 Alt 移位

android - 代码优化-声明多个方法引用的 View 并实现onclicklistener

php - 在 MySQL 中缩放递增计数器(用于跟踪页面浏览量)

mysql - 无法使 mysql 使用通过连接查询为表构建的索引

mysql - 具有多列的表