[摘要] 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。
优化数据库的注意事项:
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的性能优化是一个复杂的过程,上述这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。
分享到:
相关推荐
### 优化SQL Server数据库的经验总结 #### 一、引言 在现代企业的信息化建设中,数据库作为信息系统的核心组件之一,其性能的好坏直接影响着整个系统的响应速度和用户体验。SQL Server作为一款广泛使用的数据库...
资源名称:SQL Server 2005 一千万条以上记录分页数据库优化经验总结 资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
6. 性能优化:通过分析查询计划、调整索引、优化SQL语句等方式提升数据库性能。 在自我学习过程中,可以通过在线教程、教科书、视频课程等多种方式获取知识,并配合实际动手操作,如创建数据库、编写SQL脚本等。...
通过阅读"sql优化经验总结V1.5.ppt"和"sql优化经验总结.ppt",可以更深入地学习到更多实用技巧和案例分析,进一步提升在Oracle SQL优化方面的能力。不断学习和实践,才能在这个领域取得更大的成就。
在SQL Server数据库优化领域,有许多关键点需要理解并掌握,以确保系统性能高效稳定。以下是对标题和描述中提到的数据库优化知识点的详细说明: 1. **查询优化**:SQL Server查询优化是数据库优化的核心部分,它...
### SQL优化经验总结34条深度解读 #### (1) 最优表名顺序:提升查询效率 在基于规则的优化器中,Oracle按照从右至左的顺序处理FROM子句中的表名。为了提高查询效率,应将记录条数最少的表置于FROM子句的最后,作为...
### SQL优化经验总结34条 #### 一、选择最有效率的表名顺序 - **要点**: 在基于规则的优化器(RBO)中,Oracle解析器从右至左处理FROM子句中的表名。为了提高性能,应将记录条数最少的表放在最后,即作为基础表。...
总结来说,面对一千万条以上的记录,SQL Server 2005的数据库优化主要包括索引优化和代码优化两方面。通过合理设计和利用索引,优化查询语句,以及定期进行数据库维护,可以显著提升大规模数据的分页查询性能,确保...
标题《数据库工作经验总结》和描述“完全源于Rogers的多年工作经验总结。是我工作中必备的工具箱。大量实用的SQL命令,数据库是ORACLE。”以及标签“Oracle DBA”,都指明了文档所讨论的内容是与Oracle数据库管理...
### Oracle数据库开发经验总结 #### 一、Oracle SQL Plus 使用技巧 **1. 查找重复记录** 在数据库中,重复记录可能会影响数据的准确性和一致性。为了找出这些重复记录,可以使用以下SQL语句: ```sql SELECT ...
### SQL优化经验总结 #### 1. 选择最有效的表名顺序 在基于规则的优化器中,Oracle解析器会按照从右到左的顺序处理FROM子句中的表名。因此,写在最后的表(基础表)将被最先处理。为了提升性能,应选择记录条数...
以下是对SQL优化经验的一些深入探讨和总结: 1. **查询语句优化**:首先,理解SQL语句的工作原理至关重要。避免全表扫描,合理使用索引,尤其是在WHERE子句中的字段。如果可能,应尽量使用等值查询,而非范围查询,...
数据库优化经验总结 数据库优化是一个复杂的过程,涉及多方面的因素,包括数据库设计、系统架构、服务器配置、数据表组织、缓存策略、并发处理等。以下是个人总结的一些数据库优化经验,希望与各位分享、交流。 ...
本文将分享一位开发者针对SqlSever2005一千万条以上记录的分页数据库优化经验,包括索引优化和代码优化,帮助读者理解如何应对大规模数据处理中的性能瓶颈。 首先,当数据量达到千万级别时,数据库的性能表现将直接...
数据库是存储和管理数据的核心...随着对SQL的深入理解和实践经验的积累,你将能够处理更复杂的数据库任务,如性能优化、事务处理、存储过程和触发器等。对于数据库管理员和开发人员来说,熟练掌握SQL是必不可少的技能。
### 数据库设计经验总结 #### 一、设计数据库之前的准备 **1.1 考察现有环境** 在设计新数据库之前,深入了解当前环境是非常重要的一步。这包括但不限于研究现有系统的架构、流程以及存在的问题。大多数情况下,...
一千万条以上记录分页数据库优化经验总结.pdf"这两份文档很可能会进一步深入这些话题,提供实际案例和具体的调优步骤,对于SQL Server管理员和开发者来说,是宝贵的参考资料。通过学习这些资料,你可以掌握如何在...