21. 用EXISTS替换DISTINCT 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换 例如: 低效: SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO 高效: SELECT DEPT_NO,DEPT_NAME FROM DEPT D
SQL> set linesize 200 SQL> set pagesize 200 SQL> set autot trace SQL> select distinct department_name from hr.departments dept, hr.employees emp where dept.department_id = emp.department_id; 2 3 11 rows selected. Execution Plan ---------------
--复习autotrace: SET AUTOTRACE OFF --不生成AUTOTRACE 报告,这是缺省模式 SET AUTOTRACE ON EXPLAIN --AUTOTRACE只显示优化器执行路径报告 SET AUTOTRACE ON STATISTICS --只显示执行统计信息 SET AUTOTRACE ON --包含执行计划和统计信息 SET AUTOTRACE TRACEONLY --同set autotrace on,但是不显示查询输出 --案例模拟 --查询原始表: 23
1.取出表中第31到40行的记录 mysql方案:select * from t order by id limit 30,10 oracle方案: select t2.* from (select rownum r,t1.* from yourtable t1 where rownum<=40) t2 where t2.r>30 2.truncate和delete有什么区别 TRUNCATE TABLE在功能上与不带WHERE子句的DELETE语句相同,二者均删除表中的全部行.但TRUNCA