`

not in 失效

SQL 
阅读更多

    今天同事碰到一个问题,在做两个表的数据对照时用了not in ,结果出现了查找失败的结果。
网上查了一下才知道,not in 有个毛病:
    像SQL语句  select * from t1 where f1 not in (select f1 from t2) 这是去除t1表中包括t2中数据的语句。
如果在t2中的f1字段中有null值的话,则查不到结果。也就是说在not in 右边的集合中不能有null值,
而在not in左边有null值没有问题。
分享到:
评论
1 楼 vern 2011-11-16  
受益了,谢谢

相关推荐

    oracle索引失效的总结

    - 尝试使用其他条件替代,如使用`NOT EXISTS`代替`IN`。 - 对于`<>`条件,可以考虑使用范围查询来替换。 #### 5. 大量的LIKE模式匹配 使用LIKE模式匹配时,如果模式是以通配符开头(如`'%abc'`),则索引可能不会...

    MySQL数据库索引失效的10种场景.zip

    在创建索引时,考虑是否允许NULL值,或使用`NOT NULL`约束。 **4. OR逻辑运算符** 当`OR`连接两个条件时,即使这两个条件都涉及索引,MySQL也可能选择全表扫描。可以尝试使用UNION ALL或者重构查询来改善性能。 **...

    mysql数据库In的优化.txt

    CREATE TEMPORARY TABLE userlist(UserID int NOT NULL DEFAULT 0); INSERT INTO userlist(UserID) VALUES (166); -- 关联查询,如果users表中有166则返回1 SELECT COUNT(ul.UserID) FROM userlist AS ul ...

    oracle数据库索引失效

    9. 使用`NOT IN`或`NOT EXISTS`子句,这通常需要优化器进行复杂处理,可能导致不使用索引。 10. 当日期和时间类型的比较出现问题,如使用TIMESTAMP变量与DATE列进行比较。 11. Oracle的成本基础优化器(CBO)可能...

    导致MySQL索引失效的一些常见写法总结

    12. **使用NOT IN或IN与子查询**:当使用子查询时,MySQL可能无法评估索引的有效性,导致索引失效。 13. **索引选择性低**:如果索引列的唯一性不高,即很多行都有相同的索引值,MySQL可能认为全表扫描更高效。 ...

    【mysql面试题】100道MySQL数据库经典面试题解析

    = 或者 ,not in)时,可能会导致索引失效。   索引字段上使用is null, is not null,可能导致索引失效。   左连接查询或者右连接查询查询关联的字段编码格式不一样,可能导致索引失效。   mysql估计...

    Mysql数据库索引创建、索引删除、索引失效场景详解

    索引的失效场景包括:更新或删除索引列,使用不带索引的全表扫描操作,使用`SELECT *`而不是明确列出索引列,使用`NOT IN`、`<> ALL()`或`NOT EXISTS`等操作,以及在`WHERE`子句中使用了函数或表达式。此外,索引也...

    MySQL中索引失效的常见场景与规避方法

    为了避免这种情况,可以考虑使用`UNION ALL`或`IN`替代`OR`,例如`SELECT * FROM user WHERE user_id = 1 UNION ALL SELECT * FROM user WHERE age = 20;`这样可以分别利用每个条件对应的索引。 2. **负向查询**: ...

    oracl数据库查询优化[定义].pdf

    6. **MINUS子句和NOT IN**:MINUS子句通常比NOT IN更快,但需注意,NOT IN和NOT EXISTS在处理NULL值时有所不同,NOT EXISTS在某些情况下可能更快,因为它可以使用索引。 7. **LIKE操作符的效率**:`LIKE`操作符,...

    Javascript中封装window.open解决不兼容问题

    对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { ...

    pyinstxtractor.py (改进) - 反编译pyinstaller生成exe的工具

    改进后的pyinstxtractor.py, 适合还原pyinstaller生成的exe,从exe中提取代码。 本文件已经过多次bug修复, 支持各个不同的python版本。 使用说明: 将需提取的exe文件拖入pyinstxtractor.py, 执行成功后, 会生成一个...

    SQL Server中的SQL语句优化与效率问题

    3. 非操作符和函数:包含非操作符(如`NOT`)或函数的条件通常不满足SARG形式,例如`NOT IN`、`NOT LIKE`、`NOT EXISTS`等。这些操作会阻止索引的直接应用。函数如`ABS(价格)`或表达式`价格*2>5000`也可能导致索引...

    oracle管理及优化文档 粗略整理

    - **分析**:这个查询包含了多个条件,其中`NOT IN`应该被优化为`NOT EXISTS`或使用外连接。同时,使用`AND`连接多个条件有助于利用索引。 - **函数与操作符**: - `SELECT UPPER('ADFADF') FROM DUAL` - `...

    ecshop和jquery冲突的解决方法

    当两者同时存在于同一个页面时,就可能发生冲突,导致某些功能失效。 #### 典型示例: 假设Ecshop中有一个名为`$.fn`的方法用于实现某个特定功能,而在引入jQuery后,该方法被覆盖或者发生了作用域冲突,从而使得...

    使用Element的InfiniteScroll 无限滚动组件报错的解决

    TypeError: Failed to execute ‘observe’ on ‘MutationObserver’: parameter 1 is not of type ‘Node’ InfiniteScroll的更多用法element官网 二、解决办法 给需要使用 InfiniteScroll 的元素或者它的父级...

    PowerDesigner中显示name,code,comment的解决方法

    在PowerDesigner9.5以上的版本中,设置同时显示name和code的方法已经失效,但是现在有这个需求。因此,我们需要找到一种方法来同时显示name、code和comment。 解决方法: Step1:选中PDM模型中所有要操作的表,执行...

    Oracle——sql语句优化

    对于复杂的查询,尤其是涉及分组和统计的场景,IN操作符的转换机制可能失效。因此,在高负载、频繁访问的系统中,应谨慎使用IN操作符,考虑采用其他更高效的查询方式。 **推荐方案**:在业务密集场景下,尽量避免...

    30个提高数据库查询效率方法总结笔记

    知识点:in 和 not in 操作符可能会导致索引失效,可以使用 between 语句来替代。 6. 下面的查询也将导致全表扫描:select id from t where name like '%abc%'。 知识点:使用 like 语句可能会导致索引失效,可以...

    sql优化技巧

    这是因为 `EXISTS` 和 `NOT EXISTS` 只需找到一个匹配项即可返回结果,而 `IN` 和 `NOT IN` 需要检查所有项。 - 示例:如果需要查询某个表中存在另一张表中的ID,则可以使用 `EXISTS` 来替代 `IN`: ```sql ...

Global site tag (gtag.js) - Google Analytics