之前看过一段文章说in会导致全表扫描,我现在想要一个用not in的语句 我想请问下 怎么样才能避免全表扫描 另外下面的情况下 哪些会导致全表扫描a!=0 and a!=1
a not in ('0','1')
a not in ('0','1')
解决方案 »
- 数据导入错误提示:预期值是 有效的列说明, "," 或 ")", 而实际值是 "job"。
- 如何变更数据类型
- 关于pl/sql的小问题
- 如何提取相似记录中的一条记录
- oracle9i 在PL/SQL中 如何 訪問 web service
- JDBC连ORACLE的驱动问题。。。。。。。
- 关于数据库链的问题~~~~~~~~~~~~或者大家有其他办法帮我出出主意~~~~~~~~~~~~~
- 从SQL SERVER用DTS导入数据到ORACLE 中时,输入目的用户和密码老是报错
- 求教oracle的日期问题,在线等待,高分相送,急急急
- 存储中一语句返回多个值如何定义接收?
- datastage从txt文件导数据到oracle,第一条记录的第一个字段前多出个问号
- 高分求助!oracle导入dmp问题
例如:
低效:
SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN (SELECT DEPTNO FROM DEPT
WHERE LOC = ‘MELB’)
高效:
SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND
EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)
如果oracle认为全表扫描更快 会全表扫描 但是一般来说 in还是会走索引的
还有,in和exist not in和not exist哪个效率更高 一直没有定论
如果in中的数据量很大,exist效率可能会高于in 要分情况
但是决不能简单的认为 exist效率比in高
否则 oracle早把in淘汰了
2.in和exists是分情况使用的
a)外表大,内表小时用in,因为in会对内表做全表扫描。
b)外表小,内表大时用exists,因为内表找到了满足条件的记录就退出了。