一,全表扫描是什么?
全表扫描,就是一条一条记录的遍历,直到表中的最后一条记录。
在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。
在使用EXPLAIN分析SQL时,当列出执行计划表中type字段值为ALL时,代表需要全表扫描。
二,什么情况会进行全表扫描?
–1)条件中使用了null
–2)使用or作为连接条件
–3)使用[not] in时
–4)使用模糊查询时
–5)使用!=或者<>时
–6)使用count(*)时
–7)使用参数作为条件时
–8)索引使用不当时
–9)左模糊查询:like ‘%XXX’
三,如何避免全表扫描?
1.添加索引列。
正确添加索引列应该注意以下场景:
–1) 该列是否在应用为唯一索引,如果不为唯一索引,重复值的出现概率为多少,如果重复值出现多,是否可以与其他列一起组合成为联合索引而降低其重复率;
–2) 多个单独应用可能建立了多个索引,对于较大表而言,索引的大小与索引的维护也会对数据库性能产生重大影响,此时应该考虑是否能够将应用合并或根据应用特点将索引合并;
–3)表的操作中在insert、update和delete等涉及数据变化的操作中,也会设计到索引的维护。对于表内无