索引

什么是索引?

数据库中的所以,好比是一本书的目录,可以快速进行特定值的定位和查找,从而加快查询效率

索引不是万能的,在有些情况下使用索引反而会让效率变低

  • 在数据比较少的情况下,比如不到1000行,就不需要创建索引的
  • 在数据重复度大,比如高于10%的时候,也不需要对这个字段使用索引(比如性别男女比例失调的除外 ,100万行查找50w行,一旦创建索引就得先行问50w次索引,然后在访问50w次数据表,效率降低)
索引的种类

普通索引、唯一索引、主键索引、全文索引

普通索引是基础索引,没有任何约束,主要用于提高查询效率。
唯一索引,在普通索引基础上加了数据唯一性约束
主键索引,在唯一索引基础上增加了不少空的约束(NOT NULL+UNIQUE),一张表最多有一个主键索引
全文索引,用的不多。

按照物理实现方式,索引可以分为 2 种:聚集索引和非聚集索引。

  • 聚集索引可以按照主键来排序存储数据(例如查字典,按拼音查找)
  • 非聚集索引,数据库系统单独储放非聚集索引,索引项目按顺序存储的,但索引项指向的内容是随机存储的,系统会进行两次查找,第一次先找到索引,第二次找到索引对应的位置取出数据行,相对于聚集索引,他不会直接定位到索引的后面,而是维护单独的索引表。(例如查字典,先按偏旁查,然后再定位后半部分)

聚集索引和非聚集索引,在使用上的区别:

  1. 聚集索引的叶子节点存储的就是我们的数据记录,非聚集索引的叶子节点存储的是数据位置。非聚集索引不会影响数据表的物理存储顺序。
  2. 一个表只能有一个聚集索引,因为只能有一种排序存储的方式,但可以有多个非聚集索引,也就是多个索引目录提供数据检索。
  3. 使用聚集索引的时候,数据的查询效率高,但如果对数据进行插入,删除,更新等操作,效率会比非聚集索引低。

索引还可以按照字段个数进行划分,分成单一索引和联合索引。
索引列为一列时为单一索引;多个列组合在一起创建的索引叫做联合索引。

联合索引存在最左匹配原则,也就是按照最左优先的方式进行索引的匹配。比如刚才举例的 (x, y, z),如果查询条件是 WHERE x=1 AND y=2 AND z=3,就可以匹配上联合索引;如果查询条件是 WHERE y=2,就无法匹配上联合索引。

总结:

使用索引可以帮助我们从海量的数据中快速定位想要查找的数据,不过索引也存在一些不足,比如占用存储空间、降低数据库写操作的性能等,如果有多个索引还会增加索引选择的时间。当我们使用索引时,需要平衡索引的利(提升查询效率)和弊(维护索引所需的代价)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值