MySQL如何提高SQL查询效率

本文介绍了MySQL中如何通过建立索引来提高SQL查询效率,讲解了索引的概念、查找过程、适用场景及注意事项。索引能够显著减少磁盘IO,加快查询速度,但也可能影响数据修改效率。合适的索引策略包括为主键、频繁查询字段、关联字段建立索引,避免在where子句中使用!=、%等操作符导致索引失效。
摘要由CSDN通过智能技术生成

MySQL是十分常用的关系型数据库,工作中常常需要对SQL进行优化,提高查询效率。建立索引是常用的方法。那么什么是索引,以及在使用索引时需要注意哪些问题?

什么是索引

建立索引是提高查询效率最常用的方法,我们先了解一下什么是索引。
官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构
个人总结:索引是一种排好序的快速查找数据结构
索引两大作用:排序快速查找
索引的优缺点:
优:提高查询效率,减少磁盘IO
缺:占用空间,降低修改操作的效率。更新表不仅要更新数据,还要更新索引信息。
索引结构:BTree树,R-Tree,hash,full-text等
以B+树索引为例,附图
在这里插入图片描述
一颗B+树,浅蓝色的块我们称之为磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄颜色所示),如磁盘块1包含数据项17和35,包含指针P1,P2,P3。
P1表示小于17的磁盘块,P2表示17-35之间的磁盘块,P3表示大于35的磁盘块。
真实的数据存在于叶子节点,即3,5,9,10,13,15,28,29,36,68,75,79,90,99。
非叶子结点不储存真实数据,只储存指引搜索方向的数据项,如17,35并不真实存在于数据表里。

索引查找过程

还以上图为例,如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生第一次IO。在内存中使用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,此时发生第二次IO。29在26和30之间,锁定磁盘块3的P2指针,通过指针将磁盘块8加载到内存,此时发生第三次IO,同时在内存中做二分查找找到29,结束查询。共计三次IO。
真实情况是,3层的B+树可以表示上百万的数据,上百万的数据查找只需要三次IO,性能提高将是巨大的。如果没有索引,每个数据项都要进行一次IO,上百万次的IO成本是非常非常高。

索引的使用场景

索引对查询效率的提升是巨大的,那是不是任何情况都可以建立索引?建立的索引越多越好?显然答案是否定的。那我们来讲一下哪些情

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值