索引的作用、为什么能提高检索速度?

1 篇文章 0 订阅
1 篇文章 0 订阅
  • 索引可以提高 MySQL 的检索速度。
  • 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

为什么能提高检索速度


  • 索引就是通过事先排好顺序,从而在查询时可以应用二分查找等高效率的算法。
  • 一般的顺序查找,复杂度为 O (n),而二分查找复杂度为 O (log2n)。
  • 一个或多个字段需要频繁用作查询条件,创建索引会明显提高查询速度,因为可由全表扫描改成索引扫描。
  • 无索引时全表扫描也就是要逐条扫描全部记录,直到找完符合条件的,索引扫描可以直接定位
  • 不管数据表有无索引,首先在 SGA 的数据缓冲区中查找所需要的数据,如果数据缓冲区中没有需要的数据时,服务器进程才去读磁盘。
  • 1、无索引,直接去读表数据存放的磁盘块,读到数据缓冲区中再查找需要的数据。
  • 2、有索引,先读入索引表,通过索引表直接找到所需数据的物理地址,并把数据读入数据缓冲区中。

索引缺点


  • (1)索引是有大量数据的时候才建立的,没有大量数据反而会浪费时间,因为索引是使用二叉树建立.
  • (2)当一个系统查询比较频繁,而新建,修改等操作比较少时,可以创建索引,这样查询的速度会比以前快很多,同时也带来弊端,就是新建或修改等操作时,比没有索引或没有建立覆盖索引时的要慢。
  • (3)索引并不是越多越好,太多索引会占用很多的索引表空间,甚至比存储一条记录更多。
  • 对于需要频繁新增记录的表,最好不要创建索引,没有索引的表,执行 insert、append 都很快,有了索引以后,会多一个维护索引的操作,一些大表可能导致 insert 速度非常慢。

原文作者:MaChao
转自链接:https://learnku.com/articles/51557
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值