优化数据库的办法及SQL句子优化的准则ITeye - 威尼斯人

优化数据库的办法及SQL句子优化的准则ITeye

2019年03月13日10时33分25秒 | 作者: 运莱 | 标签: 优化,数据库,索引 | 浏览: 3083

转自 硅谷动力 

优化数据库的办法及SQL句子优化的准则

优化数据库的办法: 

1、要害字段树立索引。 

2、运用存储进程,它使SQL变得愈加灵敏和高效。 

3、备份数据库和铲除废物数据。 

4、SQL句子语法的优化。(能够用Sybase的SQL Expert,惋惜我没找到unexpired的序列号) 

5、整理删去日志。 

SQL句子优化的准则: 

◆1、运用索引来更快地遍历表 

缺省情况下树立的索引对错群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引规划要树立在对各种查询的剖析和猜测上。一般来说:①.有很多重复值、且常常有规模查询(between, , , =, =)和order by、group by发作的列,可考虑树立群集索引;②.常常一起存取多列,且每列都含有重复值可考虑树立组合索引;③.组合索引要尽量使要害查询构成索引掩盖,其前导列一定是运用最频频的列。索引虽有助于进步功能但不是索引越多越好,恰好相反过多的索引会导致体系低效。用户在表中每加进一个索引,保护索引调集就要做相应的更新作业。 

◆2、IS NULL 与 IS NOT NULL 

不能用null作索引,任何包括null值的列都将不会被包括在索引中。即便索引有多列这样的情况下,只需这些列中有一列含有null,该列就会从索引中扫除。也就是说假如某列存在空值,即便对该列建索引也不会进步功能。任安在where子句中运用is null或is not null的句子优化器是不允许运用索引的。 

◆3、IN和EXISTS 

EXISTS要远比IN的效率高。里边关系到full table scan和range scan。简直将一切的IN操作符子查询改写为运用EXISTS的子查询。 

◆4、在海量查询时尽量少用格局转化。 

◆5、当在SQL SERVER 2000中,假如存储进程只要一个参数,并且是OUTPUT类型的,有必要在调用这个存储进程的时分给这个参数一个初始的值,不然会呈现调用过错。 

◆6、ORDER BY和GROPU BY 

运用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的功能进步。留意假如索引列里边有NULL值,Optimizer将无法优化。 

◆7、任何对列的操作都将导致表扫描,它包括数据库函数、核算表达式等等,查询时要尽可能将操作移至等号右边。 

◆8、IN、OR子句常会运用作业表,使索引失效。假如不发作很多重复值,能够考虑把子句拆开。拆开的子句中应该包括索引。 

◆9、SET SHOWPLAN_ALL ON 查看履行计划。DBCC查看数据库数据完整性。 

DBCC(DataBase Consistency Checker)是一组用于验证 SQL Server 数据库完整性的程序。 

◆10、慎用游标 

在某些有必要运用游标的场合,可考虑将契合条件的数据行转入暂时表中,再对暂时表界说游标进行操作,这样可使功能得到明显进步。 

总结: 

优化就是WHERE子句使用了索引,不行优化即发作了表扫描或额定开支。经验证,SQL Server功能的最大改善得益于逻辑的数据库规划、 

索引规划和查询规划方面。反过来说,最大的功能问题常常是由其间这些相同方面中的缺乏引起的。其实SQL优化的本质就是在成果正确的前提下,用优化器能够辨认的句子,充份使用索引,削减表扫描的I/O次数,尽量防止表搜索的发作。其实SQL的功能优化是一个杂乱的进程,以上这些只是在使用层次的一种表现,深入研究还会触及数据库层的资源配置、网络层的流量操控以及操作体系层的总体规划。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章