`
zu14
  • 浏览: 446395 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

SQL查询语句优化的一点

阅读更多

(1) INSERT [INTO] B SELECT id, field1, field2 FROM A WHERE NOT EXISTS (SELECT id FROM B WHERE id=[A.]id) 

(2) INSERT [INTO] B SELECT * FROM A WHERE id NOT IN (SELECT id FROM B)

---------------------------------------------------------------------------

这两句,都是将 A 表中存在, 但B表中不存在的数据, 插入到B表中, 关联比较字段为 id.
但这两句的执行效率,却是有数量级的差别.

结论有两点:

  1. 尽量用 EXISTS 和 NOT EXISTS 代替 IN 和 NOT IN
  2. 不要偷懒, 尽量不用 SELECT * FROM ...., 而要写字段名 SELECT field1,field2,.... 


注意:
    在SQL SERVER中, EXISTS 用的比较多的是在 存储过程或触发器 中, 而在ORACLE中,却没有这个功能, ORACLE中的EXISTS 只能用在 单句的 SQL 中.

分享到:
评论

相关推荐

    基于索引的SQL语句优化之降龙十八掌

    本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’。 这次传授的降龙十八掌,总纲...

    SQL查询安全性及性能优化

    说明:通过这个报表找到排在前10 的sql语句,如果这些语句是用户编写的sql语句,我可以对其进行优化。 我们可以根据这些信息筛选出需要优化的SQL语句进行优化 SQL优化经验  大表缺索引---必要字段上建立索引  ...

    oracle语句优化总结

    oracle语句优化总结,自己的一点经验之谈,没啥特别的,对于oracle数据库的sql语句进行优化有时候很有用。

    收获,不止SQL优化

    很好的学习SQL优化的书,而且还提供了很多有用的常用语句,梁敬斌的书还是值得推荐的

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法。 先建立一个表,并添加一些数据来进行演示: 复制代码 CREATE TABLE t_student( Id INT NOT NULL, ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP...

    基于mysql查询语句的使用详解

    1> 查询数据表除了前三条以外的数据。  起初我想到的是这条语句  SELECT * FROM admin WHERE userid ...这个的意思是表示子查询的时候不支持limit ,还有一点我就是很二了 就是查询的时候用not in 效率非常不高 最后

    Toad 使用快速入门

    SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地...

    Mysql跨表更新 多表update sql语句总结

    在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts …的方式: 代码如下: UPDATE product p, productPrice pp SET pp.price = pp.price * 0.8 WHERE p.productId = pp.productId AND p....

    ibatis的一个CRUD

    从配置文件中优化sql语句。 (2) ibatis可以进行细度优化。可以针对一个表中一个或几个字段进行更新等操作。Hibernate会更新所有的字段。 (3) ibatis可维护性高一点。 2.Ibatis需要的jar包 (1) ibatis-2.3.4.726....

    SQL对数据进行按月统计或对数据进行按星期统计的实例代码

    对于所有的需求,当你不知道怎么处理的时候,你就先用最简单的方法,或者说的明白一点,用最原始的方法,先实现业务需求再说。  一、对提现队列数据表“ims_checkout_task”进行汇总统计,按月汇总统计每个月的提现...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    1.0 版本已经从基于规则的查询优化器转向基于代价的查询优化器,但是还不够完善,在 2.0 版本中,一方面优化统计信息的精确度以及更新及时程度,另一方面提升 SQL 优化器的能力,对查询代价的估算更加精准、对复杂...

    公交查询系统修正版 仿

    我们通过循环来生成SQL字符串,而不是通过循环来生成多个SQL语句。这样子在相同的条件下就只需要打开一次数据库读取。而不是通过多次循环打开来实现。这样子在数据库的链接、打开、关闭等方面节省了比较大的时间。...

    全国公交查询asp源码

    我们通过循环来生成SQL字符串,而不是通过循环来生成多个SQL语句。这样子在相同的条件下就只需要打开一次数据库读取。而不是通过多次循环打开来实现。这样子在数据库的链接、打开、关闭等方面节省了比较大的时间。...

    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第11版)

    我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...

    公交车查询系统 v3.30.rar

    我们通过循环来生成SQL字符串,而不是通过循环来生成多个SQL语句。这样子在相同的条件下就只需要打开一次数据库读取。而不是通过多次循环打开来实现。这样子在数据库的链接、打开、关闭等方面节省了比较大的时间。...

    Oracle中基于hint的3种执行计划控制方法详细介绍

    通过在SQL语句中直接嵌入优化器指令,进而使优化器在语句执行时强制的选择hint指定的执行路径,这种使用方式最大的好处便是方便和快捷,定制度也很高,通常在对某些SQL语句执行计划进行微调的时候我会首选这种方式,...

    sqltoy-orm框架系统-其他

    4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-...

Global site tag (gtag.js) - Google Analytics