前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库索引

数据库索引

作者头像
SakuraTears
发布2022-01-13 15:03:13
3110
发布2022-01-13 15:03:13
举报
文章被收录于专栏:从零开始的Code生活

什么是索引

索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。 例如这样一个查询:select * from table1 where id=10000 如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法(B+ 树)优化过的,因而查找次数要少的多。可见,索引是用来定位的。

为什么使用索引

从上面的例子可以看出来使用索引的一大好处就是可以大大提高查询速度,如果把使用索引的MYSQL比作一辆兰博基尼,没使用索引的MYSQL就相当于一辆马车。 索引分单索引和组合索引,单列索引就是一个索引只包含一个列,一个表可以包含多个单列索引。 组合索引是一个索引包含多个列。

使用索引的优点是可以大大提高查询速度,缺点就是更新表的速度会变慢。在更新表的时候MYSQL不但要保存数据,还要保存索引。索引也会占用磁盘空间。

数据库索引有哪些

1.聚簇索引(主键索引):主键上的索引,表的所有字段都会根据主键排序 2.非聚簇索引:普通字段的索引 3.联合索引:一个索引包含多个字段

key 'name_age_sex' ('name', 'age', 'sex') 联合索引遵从最左前缀原则: 根据上面的联合索引,下面的几个查询语句哪个会使用索引呢?

代码语言:javascript
复制
A: select * from user where name = 'zhangsan' and age = 16 and sex = '男'
B: select * from user where age = 16 and name = 'zhangsan' and sex = '男'
C: select * from user where age = 16 and name = 'zhangsan'
D: select * from user where name = 'zhangsan' and age > 10 and sex = '男'
E: select * from user where name != 'zhangsan' and age = 10
F: select * from user where name = 'zhangsan' and age != 10

A:符合最左前缀原则name第一个,age第二个,sex第三个 B:也符合,这条语句会被转换成和A一样的语句 C:不符合,直接从age开始 D:因为age是范围查找,name和age使用索引,范围查找后面的不会使用索引,所以sex不会使用索引查找 E:!=不走索引,索引都不使用索引 F:name走索引,后面的不走,理由同上

什么情况不使用索引

代码语言:javascript
复制
key 'age' (age)
key 'name' (name)

LIKE

like后面的值%在前面的不使用索引,在后面的使用索引

代码语言:javascript
复制
# 使用索引
select * from user where name like 'zhang%'
# 不使用索引
select * from user where name like '%zhang'

使用索引进行计算的

代码语言:javascript
复制
# 使用索引
select * from user where age = 10 + 8
# 不使用索引
select * from user where age + 8 = 10

对索引列用函数

代码语言:javascript
复制
# 不使用索引
select * from user where concat('name', 'san') = 'zhangsan'
# 使用索引
select * from user where name = concat('zhang', 'san')

对索引列使用'!='的

代码语言:javascript
复制
# 不使用索引
select * from user where name != 'zhangsan'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

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