数据库优化<八>SQL优化之SELECT优化 ——避免全表扫描

本文探讨了数据库优化中的一个重要主题——如何避免全表扫描。通过运行执行计划获取SQL查询分析,添加索引,或重写查询来优化性能。全表扫描可能在特定条件下不可避免,如小表、值集中或低基数索引。建议使用UNION而非OR进行查询优化,并根据查询条件创建合适的索引类型。
摘要由CSDN通过智能技术生成

在数据库操作中,一个全表扫描(full table scan)可能是整个应用的瓶颈,因此,我们尽量

要避免不必要的全表扫描。而如果你发现一条sql是全表扫描,一般的解决步骤是:

        1、运行执行计划获得具体的sql语句查询分析:

                   方法:explain sql;

                   分析:至少能或得这些信息,1、表的join顺序(按计划的上到下join), 2、是否

                               使用索引,3、可能会使用的索引

        2、添加对应的索引,或是重写查询sql,或更换join顺序等

        3、如果查询对当前的结构不满意,可以考虑重建表

下面分别说一下全表扫描可能发生的情形:

         1、在on或者where字句中,使用的列没有索引,可以考虑加一个索引

         2、表很小,大约少于10行,这个没有什么危害,因为即使你有索引,优化器也会判断

                在边读索引边取数据时,直接全表扫描快些

         3、你在一个where字句中使用含有索引的列,但这个列的值很集中化,比如字段 gender,

                这个的值就两个值male 和 female,如果使用索引反而会慢些,不使用索引会更快,这

                 种情况不用担心

         4、这个跟第三条类似,就是当你的一个索引,他的每个键对应多个值,即基数很低<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值