一。仅是简单调优,并非专业
1.避免过多使用通配符“*”来查询,如果有明确的列查询目标的话。可以在sqlplus中‘SET TIMING ON’来显示sql执行时间,也可以直接在plsql中看到语句执行时间。
2.尽可能减少记录集行数。 使用where ... order by,然后rownum
3.使用ROWID高效删除重复记录。
DELETE FROM STU A WHERE A.ROWID>
(SELECT MIN(B.ROWID) FROM STU B WHERE A.NO=B.NO);
--如有大量重复,使用:
DELETE FROM STU A WHERE A.ROWID NOT IN
(SELECT MIN(B.ROWID) FROM STU B WHERE A.NO=B.NO)
4.使用TRUNCATE替代DELETE删除记录 尽量多使用COMMIT(释放资源),避免使用HAVING,distinct(使用子查询和分组)
5.高效统计记录行数
--普通(数据量很大不适用)
SELECT COUNT(*) FROM STU;
--优化(查询系统表)
SELECT TABLE_NAME,NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME='STU';
6.用EXISTS代替IN 用>=替代>(前者无需逐行比较) 使用WHERE子句优化GROUP BY
用索引提高检索效率 避免在索引上运算 索引列上用UNION替OR(多个索引) 避免在索引上用IS NULL