mysql 里面 order by columnA 为什么能利用 columnA 的索引 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
movq
V2EX    程序员

mysql 里面 order by columnA 为什么能利用 columnA 的索引

  •  
  •   movq 2022 年 12 月 1 日 1323 次点击
    这是一个创建于 1231 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设表tableXid(primary key) name ,age, phone, 都有索引

    如果这样查询: select phone from tableX where name='Dennis' order by age

    这个过程应该是

    1. 使用 name index 找到所有符合 Dennis 的 id ,记为集合 Set
    2. age index 给集合 Set 排序
    3. 用排序完的 id 去聚簇索引找到phone

    但第二步是怎么实现的呢?

    我觉得有一种可能是直接在 age 的索引 b+树里面顺序扫描,看扫描到的 id 是不是在 Set 里面,如果是就加入到一个列表。那么这个列表里面就是按照 age 排序号的 id

    但这样和顺序扫描有什么区别吗?为什么要用索引呢?

    6 条回复    2022-12-01 23:51:34 +08:00
    tf2
        1
    tf2  
       2022 年 12 月 1 日
    为什么 Java 父类构造函数调用被重写的方法会调用到子类的

    mysql 里面会自动为没有主键的表创建聚簇索引吗?

    mysql 里面 order by columnA 为什么能利用 columnA 的索引

    SpringSecurity 前后端分离的情况下,如何防止 CSRF 攻击?


    好家伙。v2ex 大学码农培训学校毕业。。。。
    optional
        2
    optional  
       2022 年 12 月 1 日 via iPhone
    你说的 123 不会同时实现的,要么用 name index 筛选再排序,要么用 age index 按顺序扫描,过滤记录。
    fgwmlhdkkkw
        3
    fgwmlhdkkkw  
       2022 年 12 月 1 日   2
    @lambdaq #1 惹人厌
    zhzy0077
        4
    zhzy0077  
       2022 年 12 月 1 日
    同意 2L 的说法 这里直接 建立 Name ASC, Age ASC 的索引然后 Include Phone 其实是最好的 MySQL 没有 include 的话就 name, age, phone 好了
    dog82
        5
    dog82  
       2022 年 12 月 1 日
    不一定能利用 columnA 得索引,因为查询计划都是基于 CBO 的
    查询优化有点玄学,受各种条件影响,但是底层的原理摸清楚后,就不会问这种问题了
    victorc
        6
    victorc  
       2022 年 12 月 1 日
    你 explain 看看结果,目测会有 file sort ,也就是用不到 columnA 的索引

    你这种情况应该创建 name_age 的联合索引,这个 query 排序就可以利用索引了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana   &bsp; 5686 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 60ms UTC 02:12 PVG 10:12 LAX 19:12 JFK 22:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86