ORACLE中用EXISTS代替DISTINCT的疑问?
最近看到ORACLE优化的一点建议,其中一点是用EXISTS代替DISTINCT,并给出例子:
------------DISTINCT------------------
select distinct d.deptno,d.dname
from dept d,emp e
where d.deptno = e.deptno;
------------EXISTS------------------
SELECT D.DEPTNO,D.DNAME
FROM DEPT D
WHERE EXISTS (SELECT 'X'
FROM EMP E
WHERE E.DEPTNO = D.DEPTNO);
问题:1.问什么EXISTS能实现DISTINCT功能,其运行原理是怎样的?
------------DISTINCT------------------
select distinct d.deptno,d.dname
from dept d,emp e
where d.deptno = e.deptno;
------------EXISTS------------------
SELECT D.DEPTNO,D.DNAME
FROM DEPT D
WHERE EXISTS (SELECT 'X'
FROM EMP E
WHERE E.DEPTNO = D.DEPTNO);
问题:1.问什么EXISTS能实现DISTINCT功能,其运行原理是怎样的?
...全文
相关推荐
Oracle数据库中基本的查询优化与子查询优化讲解
总结来说,优化Oracle数据库查询涉及多个方面,包括合理安排WHERE子句的顺序、使用表别名、用EXISTS替换DISTINCT、WHERE优于HAVING以及子查询的精简与索引优化。
Oracle语句规划详解
用EXISTS替换DISTINCT- **规则描述**:在一对多的关系查询中,使用EXISTS子句可以提高效率,尤其是在处理大量数据时。
Oracle提高查询效率的方法
、NOT EXISTS、IN、LEFT OUTER JOIN 等来代替 NOT 操作。
Oracle数据库优化
NOT IN可能导致全表扫描,而EXISTS和NOT EXISTS则能更好地利用索引。7. 避免在索引列上使用NOT:NOT操作会阻止Oracle使用索引,导致全表扫描。
使用distinct在mysql中查询多条不重复记录值的解决办法
如果使用的是旧版本,可以使用 count 函数来代替。


基础和管理
