数据库性能调试与优化小结
2009-10-13 15:53
337 查看
1.数据库优化要考虑的方面:T-SQL编码(查询、存储过程、数据库设计等),其它因素(硬件、客户代码、SQL Server配置和网络等“超出编码”之外等因素)。
2.性能调试不是一个可以一蹴而就的,它是一个永无止境的过程。
3.从性能角度询问终端用户对系统不满意的地方,不要等他们提出质疑,而是直接找他们进行调查。
4.应该在where从句或order by中频繁使用的列建立索引,从而提高查询速度
5.索引越多,插入速度越慢。
6.尽量不要在where中包含子查询。
7.在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾:FROM子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有三个以上的连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表.
8.在WHERE中尽量不要使用OR。
9.避免在索引列上使用计算。
10.用UNION-ALL替代UNION。
11.'!=' 将不使用索引,所以要注意使用的时机。
12.尽量明确的完成SQL语句,尽量少让数据库工作。比如写SELECT语句时,需要把查询的字段明确指出表名。尽量不要使用SELECT *语句。组织SQL语句的时候,尽量按照数据库的习惯进行组织。
13.避免在索引列上使用计算:WHERE Index*2.5<=100。
14.在WHERE中尽量不要使用OR,可以用IN来替代OR: WHERE LOC_ID=10 OR LOC_ID=15 OR LOC_ID=20。
15.用EXISTS替代IN、用NOT EXISTS替代NOT IN。
16.优化GROUP BY。
17.避免在索引列上使用IS NULL和IS NOT NULL。
18.采用绑定变量。
2.性能调试不是一个可以一蹴而就的,它是一个永无止境的过程。
3.从性能角度询问终端用户对系统不满意的地方,不要等他们提出质疑,而是直接找他们进行调查。
4.应该在where从句或order by中频繁使用的列建立索引,从而提高查询速度
5.索引越多,插入速度越慢。
6.尽量不要在where中包含子查询。
7.在过滤条件中,可以过滤掉最大数量记录的条件必须放在where子句的末尾:FROM子句中写在最后的表(基础表,driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有三个以上的连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表.
8.在WHERE中尽量不要使用OR。
9.避免在索引列上使用计算。
10.用UNION-ALL替代UNION。
11.'!=' 将不使用索引,所以要注意使用的时机。
12.尽量明确的完成SQL语句,尽量少让数据库工作。比如写SELECT语句时,需要把查询的字段明确指出表名。尽量不要使用SELECT *语句。组织SQL语句的时候,尽量按照数据库的习惯进行组织。
13.避免在索引列上使用计算:WHERE Index*2.5<=100。
14.在WHERE中尽量不要使用OR,可以用IN来替代OR: WHERE LOC_ID=10 OR LOC_ID=15 OR LOC_ID=20。
15.用EXISTS替代IN、用NOT EXISTS替代NOT IN。
16.优化GROUP BY。
17.避免在索引列上使用IS NULL和IS NOT NULL。
18.采用绑定变量。
相关文章推荐
- 数据库性能优化小结
- 性能测试 数据库优化调试之oracle10046事件跟踪
- 数据库性能优化一:数据库自身优化(大数据量)
- 数据库性能优化-1-使用SQL Server Profiler工具和执行计划分析
- 数据表分区-优化数据库性能
- 面向程序员的数据库访问性能优化法则
- C#提升性能"数据库连接打开与关闭"经验分享(附:优化过的DBHelper类) 之配餐系统的开发
- 数据库性能优化策略
- 网站性能优化/数据库调优
- oracle 数据库访问性能优化
- SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
- oracle 性能优化建议小结
- 代码测试、调试与优化小结
- Community Server性能优化小结
- 数据库性能优化三:程序操作优化
- 数据库性能优化二:数据库表优化
- oracle 数据库访问性能优化-2
- MySQL 数据库性能优化之数据库配置优化
- 面向程序员的数据库访问性能优化法则
- Mysql性能优化实战:数据库锁的介绍与索引查找原理