前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(已解决)最左前缀和覆盖索引的区别

(已解决)最左前缀和覆盖索引的区别

原创
作者头像
知识浅谈
修改2022-02-18 09:15:33
4460
修改2022-02-18 09:15:33
举报
文章被收录于专栏:分享学习分享学习

首先,主要还是索引没看懂,建立索引的时候,要为那些经常作为查询条件的字段建立索引,这样能够提高整个表的查询速度

最左前缀:就是建立的联合索引,在之后用的过程中where后边的条件字段中要符合建立的联合索引的最左前缀原则

覆盖索引:这个是指的select 后边的字段 要在建立的联合索引中,在查询的时候才能用到索引覆盖。

拓展1:

索引失效条件

  • not in/exist
  • like '%as'
  • 字符串不加单引号
  • or分割开的条件, 如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到
  • 会索引失效
  • 字符串不加单引号,造成索引失效。
  • 不要在索引列上进行运算操作,索引将失效。

解决方法:需要使用覆盖索引

拓展2:

范围查询右边的列,不能使用索引 的原因:

因为前一个条件相同的情况下当前条件才会是有序的

前一个条件不同 那么无法保证当前条件为有序的 所以索引失效

拓展3:

extra的几个解释

using index :使用覆盖索引的时候就会出现

using where:在查找使用索引的情况下,需要回表去查询所需的数据

using index condition:查找使用了索引,但是需要回表查询数据

using index ; using where:查找使用了索引,需要的数据都在索引列中能找到,所以不需要回表 查询数据

回表查询:先定位主键值,再定位行记录,它的性能较扫一遍索引树更低。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com