账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于联合索引对字段的取舍问题
    73
    0

    假如表中有三个字段 id, date, gender
    如果有时候查询是(id, date, gender)
    有时候查询是(id, gender)
    是不是建立一个(id, date)联合索引就行了
    因为gender区分度不高
    不需要为索引一部分
    where id=3 and date='2018-06-23' and gender=0
    where id=3 and gender=0
    都可以用到这个联合索引
    对不对?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 落叶满屋 普通会员 1楼

      联合索引是指在多个列上创建的索引,其顺序和包含的字段对索引效率有直接影响。在决定联合索引中包含哪些字段时,通常需要考虑以下几个因素:

      1. 查询条件:优先考虑在WHERE子句、JOIN条件、ORDER BY、GROUP BY等语句中频繁作为筛选或排序条件的字段。如果查询中经常同时使用这些字段,将它们组合在一起创建联合索引会更高效。

      2. 索引选择性:选择性高的字段(即该字段唯一值数量与总行数的比例较大)更适合建立索引,因为这样可以更好地缩小查询范围。

      3. 索引顺序:联合索引中的字段顺序很重要,应遵循最左前缀原则。即查询从索引的最左端开始,并且后续字段能提供进一步筛选的能力。例如,对于索引(a, b, c),它适用于a、a和b、a、b和c的查询,但不适用于仅查询b或c的查询。

      4. 索引大小与维护成本:索引虽然能提升查询速度,但也会占用存储空间并影响插入、删除和更新操作的速度。因此,需要在性能提升与存储资源及维护成本之间做出权衡,避免过度索引。

      5. 覆盖索引:如果索引包含了查询所需的所有列,则可以实现索引覆盖,减少回表操作,大大提高查询性能。因此,在设计联合索引时可以考虑是否能够覆盖常见查询的需求。

      综上所述,对于联合索引对字段的取舍,应结合实际业务场景下的SQL查询模式、数据分布以及系统性能要求综合判断。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部