1. 避免使用“*”
在解析过程中会对所有的列进行排序和查询,耗费更多的时间
2. 使用表的别名
更精确得定义哪一张表的哪个字段
SELECT e.ename, e.sal, d.deptno FROM emp e, dept d WHERE d.deptno=e.deptno;
3. Where 子句的连接顺序
where子句是从右向左进行匹配,因此越能缩小查询范围的条件越放到末尾。
4. 使用 >= 代替 >
因为>n的话,首先匹配n,而它不存在于查询结果中,若是>=n+1,则匹配到的n+1存在于查询结果中。
5. 用TRUNCATE代替DELETE
DELETE完之后,可以Rollback回滚,TRUNCATE不能。确定要删除的话,用TRUNCATE更快。
DELETE:如果没有commit操作,回滚段会存储删除操作恢复的信息。
TRUNCATE:不存储恢复信息,调用资源少,速度快。
6. 尽量多使用commit
好处是可以释放以下资源:
7. 避免在索引列上使用函数
SELECT * FROM dept WHERE sal*2>500; // 低效
SELECT * FROM dept WHERE sal>500/2; // 高效