专栏首页算法之名多选择条件下的建索引规则 顶

多选择条件下的建索引规则 顶

一般来说,SQL语句where选择条件下有两种情况,1,、等值查询,2、范围查询。

基本原则,不要有两个及以上的范围查询,如果有确定范围可以用in ()来替代。

InnoDB的任何二级索引会自带主键索引,所以主键索引不用写进联合索引中。

已经建了一个比较全的联合索引时,为避免重复建索引,SQL where语句中可以带入索引中有的字段,比如索引为(sex,country,region,city,age),当你的查询时不是所有字段都要where检索,假如region不需要检索,要用到该索引,你可能要加上region in (所有区域)。

范围查询的字段,放在联合索引的最后,只能有一个。

索引中的字段在select中和where中都生效。

另外,用explain+SQL语句\G可以看到很多有用的信息,比如是全表扫描还是通过索引。

查询出上百万行数据的排序,order by后面的字段放在索引中,这个没什么好说的,而且该字段最好出现在where语句中,方法同上。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL性能优化(二) 顶原

    如果数据比较少时,或者查询的频率比较低的时候,索引的作用并不明显。因为这时候表中的数据差不多都可以完全缓存在内存中。所以就算是进行全表扫描也不会太慢。

    算法之名
  • 修改Springboot 2的默认Json解析器JackSon为FastJson

    我们在Controller中如果传递的参数为对象的话,此时我们传递过来的Json串是使用SpringBoot的默认解析器来进行解析的,但是JackSon的体验并...

    算法之名
  • mybatis缓存的装饰器模式 顶

    一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会...

    算法之名
  • 探索索引的奥秘 - 有索引就一定会用么?

        2. 索引处于unusable期间,对表数据做DML操作,此时不维护索引。

    bisal
  • 千万级数据表选错索引导致的线上慢查询事故

    又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕...

    Rude3Knife的公众号
  • MySQL选错索引导致的线上慢查询事故复盘

    又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕...

    后端技术漫谈
  • MySQL选错索引导致的线上慢查询事故

    又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕...

    后端技术漫谈
  • mysql创建索引的原则

       b、过多的索引会导致insert、update、delete语句的执行效率降低;

    三哥
  • MySQL设计索引的原则

    换句话说,最适合索引的列是出现在 WHERE 子句中的列,或连接子句中指定的列,而不是出现在 SELECT 关键字后的选择列表中的列 。

    用户7657330
  • Phoenix index 二级索引

    一、索引的创建 通过二级索引,索引的列或表达式形成一个备用行键,以允许沿着这个新轴进行点查找和范 围扫描。 (1)覆盖索引 覆盖索引,一旦找到索引的条目...

    用户7625070

扫码关注云+社区

领取腾讯云代金券