17滚动

MySQL常用30种SQL查询语句优化方法

作者: 来源: 2018-03-30 00:04:09 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!

MySQL常用30种SQL萌芽语句优化办法

1、应尽量避免在 where 子句中应用!=或<>操作符,不然将引擎放弃应用索引而进行全表扫描。

2、对萌芽进行优化,应尽量避免全表扫描,起首应推敲在 where 及 order by 涉及的列上建立索引。

3、应尽量避免在 where 子句中对字段进行 null 值断定,不然将导致引擎放弃应用索引而进行全表扫描。如:

  1. select?id?from?t?where?num?is?null?

可以在num上设置默认值0,确保表中num列没有null值,然后如许萌芽:

  1. select?id?from?t?where?num=0?

4、尽量避免在 where 子句中应用 or 来连接前提,不然将导致引擎放弃应用索引而进行全表扫描,如:

  1. select?id?from?t?where?num=10?or?num=20?
  1. select?id?from?t?where?num=10?
  2. union all

  3. select id from t where num=20

5、下面的萌芽也将导致全表扫描:(不克不及前置百分号)

下面走索引

  1. select?id?from?t?where?name?like?‘c%’?

若要进步效力,可以推敲全文检索。

6、in 和 not in 也要慎用,不然会导致全表扫描,如:

  1. select?id?from?t?where?num?in(1,2,3)?

对于持续的数值,能用 between 就不要用 in 了:

  1. select?id?from?t?where?num?between?1?and?3?

7、如不雅在 where 子句中应用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化法度榜样不克不及将拜访筹划的选择推迟到运行时;它必须在编译时进行选择。然 而,如不雅在编译时建立拜访筹划,变量的值照样未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:

  1. select?id?from?t?where?num=@num?

可以改为强迫萌芽应用索引:

  1. select?id?from?t?with(index(索引名))?where?num=@num?

8、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃应用索引而进行全表扫描。如:

应改为:

  1. select?id?from?t?where?num=100*2?

      推荐阅读

      重“量”更重“质” 华为云生态2018“大不同”

    沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 【51CTO.com原创稿件】3月22日,&>>>详细阅读


    本文标题:MySQL常用30种SQL查询语句优化方法

    地址:http://www.17bianji.com/lsqh/41055.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类亚博体育手机客户端与乐购科技进行文章共享合作。

网友点评