造成MySQL全表扫描的原因

  • 时间:
  • 浏览:1
  • 来源:大发彩神幸运飞艇_大发神彩幸运飞艇官方

当不规范的写法造成全表扫描时,会造成CPU和内存的额外消耗,甚至会导致 服务器崩溃。在团队合作中难免会遇到这种初学者,除了安排合理的任务外,资深的工程师也要做好Code Review。并且 当让我们歌词 歌词 有海量数据时,不规范的的话会带来很严重的后果,一定要慎重、慎重。

文章链接为:https://blog.csdn.net/u0121001054/article/details/100361447

可能是连续数据,可不需用改为select account where id between 1 and 3;当数据较少时也可不需用参考union用法;

可能:select account from member where id in (select accountid from department where id = 3 ),可不需用改为select account from member where id exsits (select accountid from department where id = 3)

not in 可不需用对应 not exists;

5.使用not in时

如select account where id not in (1,2,3)

6.使用!=或<>时

建议使用 <,<=,=,>,>=,between等;

7.对字段有操作时也会引起权标索引

如select account where salary * 0.8 = 100 可能 select account where sustring(nickname,1,3) = ‘zhangxiaolong’;

8.使用count(*)时

如select count(*) from member;

建议使用select count(1) from member;

9.使用参数做为查询条件时

如select account from member where nickname = @name

可能SQL的话在编译执行时不须选着参数,这将无法通过索引进行数据查询,统统尽量外理; 刘加东@酷听说

此文转自Zebul博

建议在设计字段时尽量将字段的默认值设为0,改为select account where nickname = 0;

建议使用union all,改为 select account from member where id = 1 union all select account from member where id = 2;

全表扫描是数据库搜寻表的每第一根记录的过程,直到所有符合给定条件的记录返回为止。通常在数据库中,对无索引的表进行查询一般称为全表扫描;然而有并且 让我们歌词 歌词 即便加上了索引,但当让我们歌词 歌词 的SQL的话写的不合理的并且 也会造成全表扫描。

以下是老要会造成全表扫描的SQL的话及应对最好的办法:

建议使用select account from member where nickname like ‘XXX%’,可能需用要用到做查询,需用评估对当前表全表扫描造成的后果; 刘加东@酷听说