文档详情

SQL数据库优化方法.doc

发布:2016-05-10约2.02千字共8页下载文档
文本预览下载声明
SQL数据库优化方法 目录 1 系统优化介绍 1 2 外围优化 1 3 SQL优化 2 3.1 注释使用 2 3.2 对于事务的使用 2 3.3 对于与数据库的交互 2 3.4 对于SELECT *这样的语句, 2 3.5 尽量避免使用游标 2 3.6 尽量使用count(1) 3 3.7 IN和EXISTS 3 3.8 注意表之间连接的数据类型 3 3.9 尽量少用视图 3 3.10 没有必要时不要用DISTINCT和ORDER BY 3 3.11 避免相关子查询 3 3.12 代码离数据越近越好 3 3.13 插入大的二进制值到Image列 4 3.14 Between在某些时候比IN 速度更快 4 3.15 对Where条件字段修饰字段移到右边 4 3.16 在海量查询时尽量少用格式转换。 4 3.17 IS NULL 与 IS NOT NULL 4 3.18 建立临时表, 4 3.19 Where中索引的使用 5 3.20 外键关联的列应该建立索引 5 3.21 注意UNion和`UNion all 的区别 5 3.22 Insert 5 3.23 order by语句 5 3.24 技巧用例 6 3.24.1 Sql语句执行时间测试 6 系统优化介绍 在我们的项目中,由于客户的使用时间较长或客户的数据量大,造成系统运行速度慢,系统性能下降就容易造成数据库阻塞。这是个非常痛苦的事情,用户的查询、新增、修改等需要花很多时间,甚至造成系统死机的现象。速度慢的原因主要是来自于资源不足。 数据库的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。最常见的优化手段就是对硬件的升级。根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右其余系统性能提升来自对应用程序的优化。一个数据库系统的生命周期可以分成:设计、开发和成品三个阶段。在设计阶段进行数据库性能优化的成本最低,收益最大。在成品阶段进行数据库性能优化的成本最高,收益最小。升级硬件量避免使用游标如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。量使用count(1)count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。IN和EXISTS? EXISTS要远比IN的效率高。里面关系到full table scan和range scan。几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。 注意表之间连接的数据类型避免不同类型数据之间的连接。 避免相关子查询一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。在海量查询时尽量少用格式转换。IS NULL 与 IS NOT NULL? 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。Where中索引的使用 WHERE条件顺序尽量把索引字段放在前面(主键的唯一性最高),复合索引字段顺序与where条件顺序保持一致。Sql自动查找使用那个索引。 外键关联的列应该建立索引 (如子表id)主子表单据肯定要建视图,2个表的关联以2个表中的MainID为关系,所以,需要给子表的MainID单独建索引,这将很大地提高视图的速度。例如Gy_InOutSub中的InoutMainid增加索引。 注意UNion和UNion all 的区别UNION all执行效率高。 Insert Insert into 表 values() 应该为 Insert into 表 (字段) values() order by语句 ORDER BY语句决定了如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。 技巧用例 Sql语句执行时间测试 SQL数据库优化方法
显示全部
相似文档