首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
V2EX  ›  MySQL

请问 mysql explain type 里的 range 算不算是走了索引?

  •  
  •   cc959798 · 187 天前 · 1007 次点击
    这是一个创建于 187 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,还有就是 all 和 index 都算是全表扫描吗? index 的算走索引吗

    9 回复  |  直到 2018-10-17 13:29:12 +08:00
        1
    ppyybb   187 天前 via iPhone
    走了,文档说的很清楚了。
    all/index 都是全表扫描。
        2
    ppyybb   187 天前 via iPhone
    但是 index 走了索引的全表扫描,算不算看你自己怎么定义了
        3
    BBCCBB   187 天前
    all > index > range , 一般来说, range 比 index 还好点. 今天刚看到的
        4
    cc959798   187 天前
    @BBCCBB 效率方面我清楚,range 这个如果范围比较大的话,走索引感觉也没有太大的意义,毕竟要走很多次索引
        5
    cc959798   187 天前
    @ppyybb 不太明白按 index 这种按索引扫描全表,感觉按索引的顺序和直接扫描性能应该是一样的,相当于一副打乱的扑克顺序查一下和按大小顺序查一下,感觉 index 应该更慢呀
        6
    jybox   187 天前
    「按索引扫全表」和「直接扫全表」比起来,在于按索引扫描是有顺序的,如果你的查询刚好在索引的字段上有排序( ORDER BY ),那么用了索引的话就不需要在内存中排序了。
        7
    jybox   187 天前
    不对,MySQL 好像是用磁盘排序( filesort ),那就更慢了
        8
    mineqiqi   186 天前
    走了,看下 rows 数量级
        9
    ppyybb   186 天前 via iPhone
    @cc959798 当然有区别,索引的 row 上面的数据比起聚集索引的数据要少得多,这样缓存里面的每一个 page 能存更多的行。

    你如果考虑全在内存里面差距估计不大,但是从磁盘读就有差距了。当然要考虑最后 innodb 还要回表进行二次查询的开销,这个优化器会进行一定的评估来判断到底走 index 扫描划算不划算,explain 的未必就是最后的真正执行结果。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2176 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1