hgjgh 发表于 2016-11-12 06:29:09

SQL查询语句优化的一点

  (1) INSERT B SELECT id, field1, field2 FROM A WHERE NOT EXISTS (SELECT id FROM B WHERE id=id) 
  (2) INSERT B SELECT * FROM A WHERE id NOT IN (SELECT id FROM B)
  ---------------------------------------------------------------------------
  这两句,都是将 A 表中存在, 但B表中不存在的数据, 插入到B表中, 关联比较字段为 id.
但这两句的执行效率,却是有数量级的差别.
  结论有两点:

[*]尽量用 EXISTS 和 NOT EXISTS 代替 IN 和 NOT IN
[*]不要偷懒, 尽量不用 SELECT * FROM ...., 而要写字段名 SELECT field1,field2,.... 
  
注意:
    在SQL SERVER中, EXISTS 用的比较多的是在 存储过程或触发器 中, 而在ORACLE中,却没有这个功能, ORACLE中的EXISTS 只能用在 单句的 SQL 中.
页: [1]
查看完整版本: SQL查询语句优化的一点