数据库.全表扫描

全表扫描.定义

需要从全表扫描说起.

在数据库中,对无索引的表进行查询一般称为全表扫描。
全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。

这种效率是有点低的,那么怎么提高查询速度呢?
索引.

146ff0321f1e272453cc19b063b24763.png
旁白,这是一个LOL地图 + 一个雷达图的结合...

想象一下,LOL刚出来的时候,大家都是乱走位置,
根本没有打野,大家抓人全靠运气(如果那时候知道抓人)

全表扫描.结尾.何时有了索引还是会全表扫描

当我索引是摆设?

  • 查询语句使用了"Like"
    对于LIKE '%xyz%'(全模糊)这样的条件,是无法使用索引,
    另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。

解决办法:
首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询.
对于右模糊查询,即LIKE 'xyz%',是会使用索引的.
左模糊LIKE '%xyz'无法直接使用索引,但可以利用reverse + function index 的形式,变化成LIKE 'xyz%',
全模糊是无法优化的,一定要的话考虑用搜索引擎.出于降低数据库服务器的负载考虑,尽可能地减少数据库模糊查询.

  • where 子句中使用!=或<>操作符
  • where 子句中使用or 来连接条件
  • in 和not in 也要慎用
  • where 子句中对字段进行表达式操作
  • where子句中对字段进行函数操作

全表扫描.适用场景

  • ※ 表很小,索引可能就比表还大
  • ※ 访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本。
  • ※ 相对于索引来说,表中的数据排列过于凌乱,表现出来就是索引的 clustering_factor 很大,导致索引的访问成本剧增。
原文地址:https://www.cnblogs.com/love-zf/p/13556536.html