› 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
cc959798
V2EX  ›  MySQL

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

  •  
  •   cc959798 · Oct 16, 2018 · 7228 views
    This topic created in 2918 days ago, the information mentioned may be changed or developed.

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

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

    你如果考虑全在内存里面差距估计不大,但是从磁盘读就有差距了。当然要考虑最后 innodb 还要回表进行二次查询的开销,这个优化器会进行一定的评估来判断到底走 index 扫描划算不划算,explain 的未必就是最后的真正执行结果。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5704 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:53 · PVG 15:53 · LAX 00:53 · JFK 03:53
    ♥ Do have faith in what you're doing.