数据库.全表扫描
全表扫描.定义
需要从全表扫描说起.
在数据库中,对无索引的表进行查询一般称为全表扫描。
全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。
这种效率是有点低的,那么怎么提高查询速度呢?
索引.
旁白,这是一个LOL地图 + 一个雷达图的结合...
想象一下,LOL刚出来的时候,大家都是乱走位置,
根本没有打野,大家抓人全靠运气(如果那时候知道抓人)
全表扫描.结尾.何时有了索引还是会全表扫描
当我索引是摆设?
- 查询语句使用了"Like"
对于LIKE '%xyz%'(全模糊)这样的条件,是无法使用索引,
另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。
解决办法:
首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询.
对于右模糊查询,即LIKE 'xyz%',是会使用索引的.
左模糊LIKE '%xyz'无法直接使用索引,但可以利用reverse + function index 的形式,变化成LIKE 'xyz%',
全模糊是无法优化的,一定要的话考虑用搜索引擎.出于降低数据库服务器的负载考虑,尽可能地减少数据库模糊查询.
- where 子句中使用!=或<>操作符
- where 子句中使用or 来连接条件
- in 和not in 也要慎用
- where 子句中对字段进行表达式操作
- where子句中对字段进行函数操作
全表扫描.适用场景
- ※ 表很小,索引可能就比表还大
- ※ 访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本。
- ※ 相对于索引来说,表中的数据排列过于凌乱,表现出来就是索引的 clustering_factor 很大,导致索引的访问成本剧增。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了