`

(精)用表连接取代not in查询

    博客分类:
  • sql
 
阅读更多

写了好几个页面,速度都上不去,瓶颈在于SQL查询。太多的表,太多的not in,总是从一大推表和数据中筛选出一点数据。看了很多关于SQL优化的文章,都强烈要求不要太多使用not in查询,最好用表连接来取代它。如:

select ID,name from Table_A where ID not in (select ID from Table_B)

呵呵,这句是最经典的not in查询了。改为表连接代码如下:

select Table_A.ID,Table_A.name from Table_A left join Table_B on Table_A.ID=Table_B.ID and Table_B.ID is null
或者:
select Table_A.ID,Table_A.name from Table_A left join Table_B on Table_A.ID=Table_B.ID where Table_B.ID is null

经试用,效果立竿见影,呵呵:)

 

 

 

REFS:http://blog.csdn.net/terryhuang/article/details/2517004

分享到:
评论

相关推荐

    SQL各种查询方法

    7. **连接查询**:当需要从两个或更多表中检索数据时,使用`JOIN`语句。常见的类型有内连接(`INNER JOIN`)、左连接(`LEFT JOIN`)、右连接(`RIGHT JOIN`)和全外连接(`FULL OUTER JOIN`)。 8. **分页查询**:...

    ASP,ASP.NET,ACCESS数据库连接

    首先,需要创建一个`SqlConnection`对象,并使用适当的连接字符串: ```vb dim conn set conn = server.createobject("ADODB.connection") conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server....

    DB2手册pdf

    #### notin方式 使用`NOT IN`可以有效地过滤出不在另一个表中的行,但在大型表中可能会遇到性能问题。 #### except方式 `EXCEPT`用于返回在第一个表中但不在第二个表中的行。这种方法通常比`NOT IN`更高效,尤其是...

    牛新庄:DB2使用经验

    - **两个表做JOIN的不同方式的区别**:不同的JOIN方法(如`NOT IN`、`EXCEPT`、`NOT EXISTS`)可能会影响查询性能。 #### 五、其他系统和DB2的交互 - **DELPHI中从DB2取BIGINT的数据**:在Delphi中处理来自DB2的大...

    人教版选修6高二英语短语句子精选.doc

    - `not only… but also` 连接两个并列成分,表示“不但…而且…”。 - `every two years` 每两年,同义词有 `every second year` 或 `every other year`。 2. **句子理解** - `Art is influenced by the way of...

    DB2使用经验积累及心得

    - **UPDATE不能用一个表中的记录为条件修改另一个表中的记录**:需要使用其他方法,如关联查询。 - **如果显示调用存储过程时传NULL值要注意**:避免传递NULL值导致的问题。 #### DB2编程性能注意 - **大数据的导...

    db2开发经验

    8. **使用临时表取代一条一条插入:** 使用临时表可以批量处理数据,提高插入效率。 9. **循环次数很多时注意减少执行语句:** 减少循环体内的执行语句数量可以显著提高性能。 10. **看程序执行时间及结果DB2BATCH:*...

    高中英语 Unit Grammar宾语从句 新人教必修PPT课件.pptx

    - **that引导的宾语从句**:如"I hear that he will be back in a month.","that"在这里不作任何含义,仅起连接作用。 - **if/whether引导的宾语从句**:表示疑问或不确定性,如"I don't know if / whether he is...

    规则引擎Drools使用手册(中文)

    - **新增字段约束操作**:引入`notmatches`、`notcontains`、`in`、`notin`、`memberOf`、`not memberOf`等操作符,增加了规则表达的精确度。 - **自索引字段支持**:引入`this`作为自索引字段,简化了事实对象的...

    49 手机会在五年内消失吗?.docx

    While advancements in technologies like augmented reality (AR) and virtual reality (VR) might change how we interact with devices, these technologies are not likely to fully replace cell phones any...

    高中英语Unit2TheOlympicGames单元综合检测新人教版必修2

    "take the place" 表示“取代,接替”的位置,而 "replace" 直接表示“替换”,两者都可以用在这里,所以 A 和 C 都是正确答案。"instead of" 和 "in place of" 都表示“代替”,但它们是介词短语,不能单独作谓语,...

    python全套学习内容,包括python基础语法教程、字符串处理、函数、列表操作、文件处理、字典、面向对象、正则表达式等。

    - 使用`+`号连接字符串,`*`号用于重复字符串。 - 可以使用`str()`函数将其他类型转换为字符串。 7. **正则表达式**: - Python中使用`re`模块处理正则表达式,如`import re`后,可以使用`re.search()`、`re....

    高二英语完形填空专项练习及答案详解.doc

    9. 介词与方位词的使用:"in a new city"表明在城市的内部,强调位置关系。 10. 动词短语:"think over"表示“仔细考虑”,"hear about"表示“听说”,"write down"表示“写下”,"talk with"表示“与…交谈”。...

    oracle8驱动包.zip

    Oracle8是其早期的一个版本,虽然现在已经被更先进的版本如Oracle11g、Oracle12c和Oracle19c所取代,但有些旧系统或特定场景可能仍需要与Oracle8交互。本压缩包"oracle8驱动包.zip"包含了与Oracle8数据库通信所需的...

Global site tag (gtag.js) - Google Analytics