Mysql全表扫描

本文介绍了MySQL中的全表扫描,包括它的定义、触发因素及如何避免。全表扫描是在无索引情况下遍历所有记录的过程,常出现在使用NULL、OR、IN、模糊查询等条件时。为减少全表扫描,可以添加合适索引,使用ANALYZE TABLE更新索引分布,并通过FORCE INDEX强制使用索引。此外,解释了SQL查询中id、select_type等字段的含义,帮助理解查询执行顺序和类型。
摘要由CSDN通过智能技术生成

一,全表扫描是什么?

全表扫描,就是一条一条记录的遍历,直到表中的最后一条记录。

在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。
在使用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等涉及数据变化的操作中,也会设计到索引的维护。对于表内无

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值