mysql避免全屏扫描的方法

介绍

这篇文章将为大家详细讲解有关mysql避免全屏扫描的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

mysql避免全表扫描的方法:1,及订单的涉及的列上建立索引;2、在哪里子句中避免对字段进行null值判断,避免使用”!="或操作符,避免使用或来连接条件;3,慎用在和不在;4,避免在索引列上使用计算。

<强> MYSQL避免全表扫描

1。对查询进行优化,应尽量避免全表扫描,首先应考虑在位置及顺序,涉及的列上建立索引

2。应尽量避免在哪里子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描

如:选择id从t num为空可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:从t, num选择id=0

3。应尽量避免在哪里子句中使用!=或操作符,否则引擎将放弃使用索引而进行全表扫描。

4。应尽量避免在哪里子句中使用或来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,(可以使用联盟)

5。在和不在也要慎用,否则会导致全表扫描(能之间用就不要用)

6。下面的查询也将导致全表扫描。

从t,选择id名称像& # 39;%李% & # 39;选择id从t名称像& # 39;%李& # 39;

若要提高效率,可以使用此格式选择id从t名称像& # 39;李% & # 39;,也可以考虑全文检索。

7。避免在索引列上使用计算,也就是说,应尽量避免在哪里子句中对字段进行表达式操作和函数操作,这将导致引擎放弃使用索引而进行全表扫描。

如:从t, num/2选择id=100应改为:从t, num选择id=100 * 2

8。很多时候用存在代替在是一个好的选择:用存在于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值true或false。

从num在选择num(从b选择num)

用下面的语句替换:从哪里选择num存在(选择1从b num=a.num)

9。任何地方都不要使用选择从t,用具体的字段列表代替”,不要返回用不到的任何字段。

10。用祝辞=替代祝辞

高效:select *从EMP DEPTNO祝辞=4

低效:select *从EMP DEPTNO祝辞3

两者的区别在于,前者DBMS将直接跳到第一个部门等于4的记录,而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个部门大于3的记录。

11。用,子句替换有子句

关于mysql避免全屏扫描的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

mysql避免全屏扫描的方法