标签:
1.用exists,not exists 代替in,not in
2.where后面的表是从右到左, 如表a 10条记录,表b 100条记录,那么b就是基础表 语句是where b,a
3.三个以上的表连接查询,那就需要使用交叉表为基础表
3.where 子句是自下而上的过滤,那么过滤量最大的数据应该写在最后面
例如:
(低效,执行时间156.3秒)
SELECT *
FROM EMP E
WHERE SAL > 50000
AND JOB = ’MANAGER’
AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);
(高效,执行时间10.6秒)
SELECT *
FROM EMP E
WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO)
AND SAL > 50000
AND JOB = ’MANAGER’;
4.尽量避免使用*,如select *,
5.减少数据库访问次数
6.适当使用索性
7.where子句代替having,having先检索所有所有然后过滤
8.减少对表的查询
标签:
原文地址:http://www.cnblogs.com/chenlutan/p/5348107.html