zoukankan      html  css  js  c++  java
  • SQL 查询效率

    1.UNION ALL 连接两个结果表的内容,全部融合。

    UNION 则是distinct UNION ALL后的结果。

    2.JOIN,用大结果表去join小结果表的效率远远高于用小结果表去JOin大结果表。

    3.如果tab2中记录数明显高于tab1,用
    SELECT COUNT(*) FROM tab2, tab1
    效率明显优于
    SELECT COUNT(*) FROM tab1, tab2

    4.包含Select语句的放在Where之后。即:可以过滤掉最大数量记录的条件优先写在WHERE的末尾

    5.有索引的先包含索引列。

    6.in 、like、=、exists [能够用exists时,坚决不用in]

      a、如果条件字段都是非索引字段,那么效率都差不多,就看结果大小。
      b、有差别的在于条件字段是索引字段时:
    =在所以的情况下都会进行索引扫描,所以效率总是高的。
    like 当模糊查询为右模糊,比如'abc%'时,扫描索引,高效。
         当模糊查询含左模糊时,比如'%abc',进行全表扫描,低效。
    in的作用等同于or ,也是进行索引扫描,高效。

    另外,in还可以连接查询结果集,这时往往会和exists做比较。
      c、 select * from t1 where f1 in (select f1 from t2 where t2.fx='x'),

    其中子查询的where里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成exist语句,也就是效率和exist一样。

      d、 select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),

    其中子查询的where里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少,一般效率不如exists,数据量大时,效果就更加明显。

  • 相关阅读:
    MySQL概述
    Seleniumselenium基础入门
    MySQL数据库的安装与使用
    元素定位_id
    Selenium浏览器的前进、后退、刷新
    元素定位_tag_name
    Selenium浏览器操作_窗口大小设置
    元素定位_name
    搭建maven服务器(repository)
    使用dos命令生成目录树
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/2227235.html
Copyright © 2011-2022 走看看