1、查询时不返回不需要的行、列
业务代码要根据实际情况尽量减少对表的访问行数,最小化结果集,在查询时,不要过多地使用通配符如:select * from table1语句,要用到几列就选择几列,如:select col1,col2 from table1;在可能的情况下尽量限制结果集行数如:select top 100 col1,col2,col3 from talbe2,因为某些情况下用户是不需要那么多的数据的。
2、合理使用EXISTS, NOT EXISTS字句
如下所示:
SELECT SUM(T1.C1) FROM T1 WHERE ((SELECT COUNT(*) FROM T2 WHERE T2.C2=T1.C2)>0)
SELECT SUM(T1.C1) FROM T1 WHERE EXISTS(SELECT * FROM T2 WHERE T2.C2=T1.C2)
两种产生相同的结果,但是后者的效率显然要高过于前者。银行后者不会产生大量锁定的表扫描或是索引扫描。
经常需要些一个T_SQLL语句比较一个父结果集和子结果集,从而找到是否存在在父结果集中有而在子结果集中乜嘢的记录,如:
SELECT _a.hdr_key FROM hdr_tb1 a -----------tb1 a 表示tb1用别名a代替
WHERE NOT EXISTS (SELECT * FROM dt1_tb1 b WHERE a.hdr_key = b.hdr_key)
SELECT _a.hdr_key FROM hdr_tb1 a -----------tb1 a 表示tb1用别名a代替
LEFT JION dt1_tb1 b ON a.hdr_key = b.hdr_key WHERE b.hdr_key IS NULL
SELECT hdr_key FROM hdr_tb1
WHERE hdr_key NOT IN (SELECT hdr_key FROM dt1_tb1)
三种写法都可以得到同样的结果集,但是效率是依次降低
3、充分利用连接条件
在某种情况下,两个表之间可能不止一个的连接条件,这时在where 字句中将谅解条件完整的写上,有可能大大提高查询速度。
例:
a)、SELECT SUM(A.AMOUNT) FROM ACCOUNT A left jion CARD B on A.CARD_NO = B.CARD_NO
b)、SELECT SUM(A.AMOUNT) FROM ACCOUNT A left jion CARD B on A.CARD_NO = B.CARD_NO AND A.ACCOUNT_NO = B.ACCOUNT_NO
第二句将比第一句执行快得多。
4、WHERE 字句中关系运算符的选择
a)、在关系运算中,尽量使用=,尽量不要使用<>。
b)、WHERE字句中尽量不要使用NOT运算符,如:NOT IN ,NOT EXISTS, NOT>、NOT<等等NOT运算符一般可以去除。如NOT SALARY >10000K可以改为:salary<=100,如避免使用NOT IN,可以使用 left outer jion代替它。
c)、where 字句中条件表达式间逻辑关系为AND时,将条件为假的概率高的放在前面,概率相同、条件计算简单的放在前面。
d)、尽可能不要用Order by字句。使用Order by时,尽量减少列数、尽量减少排序数据行数、排序字段尽量是数字型(尽量不要是字符型)。GROUP BY、 SELECT DITINCT、UNION等字句,也经常导致Order运算。
e)、不要使用Select count(*)方式来判断记录是否存在,建议使用Select top 1 from table1 where ……。
f)、不要使用Group by而没有聚合列。
g)、避免Select 语句的Where 字句条件用于假。如:where 1=0;
h)、如果有多表连接时,应该有主从表之分,并尽量从一个表读取数,如select a.col1,a.col2 from a jion b on a.col3=b.col4 where b.col5=’a’.
i)、在where 字句中,如果有多个过滤条件,应将所有列或过滤记录数量最多的条件应该放在前面。
二、使用Truncate清空表
Truncate会将表中记录全部清空,而不能有选择性的删除指定记录。而DELETE可以指定删除的记录。由于Truncate操作在TransactionLog中只记录被Truncate的页号,而DELETE需要记载被删除记录的详细内容,因此Truncate会比DELETE更迅速。对大数据表使用Truncate,效果更加明显。Truncate Table只会删除表中记录。而不会对表的索引和结构造成影响。
三、Union和Union all
Union将两个结果集合并后,会消除重复记录,而Union all不会消除重复记录,而是直接将两个结果集直接合并。明确得知两个结果集中没有重复记录或者重复记录不影响使用,建议使用Union all 代替Union。因为Union在消除重复记录的过程中需要进行排序过滤操作,对大结果集这种排序操作会非常影响性能。下面是Union 和Union all的简单性能比较:
---------------Union
select * from table1 where code=’01’
Union
select * from table1 where code=’02’
---------------Union all
select * from table1 where code=’01’
union all
select * from talbe1 where code=’02’
分享到:
相关推荐
【非常棒的数据库优化教程02】 在数据库管理中,优化是提高系统性能的关键环节,尤其是在处理大量数据和复杂查询时。本章节主要探讨如何利用MySQL进行有效的数据库优化,包括索引的使用、选择合适的列类型、优化SQL...
MySQL 数据库优化技巧总结 MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库...
在IT行业中,数据库优化是提升系统性能的关键环节,尤其是在处理大量数据时,SQL数据库的优化显得尤为重要。本文将深入探讨SQL数据库优化方案,包括查询优化、索引优化、存储优化和架构优化等策略,旨在帮助你提升...
当数据库性能下降时,"SQL数据库优化工具"就显得至关重要。这些工具能够帮助我们诊断问题、提高查询效率并优化整体数据库结构,确保系统运行顺畅。 一、SQL查询优化 SQL查询优化是数据库优化的关键部分,它涉及到...
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
数据库优化是IT领域中至关重要的一个环节,尤其是在大数据量、高并发的系统中,数据库性能的优劣直接影响到系统的响应速度和用户体验。本压缩包包含了关于数据库优化的多个文档,如"SQL语句优化.doc"、"数据库优化:...
《数据库优化与集成之实战和效果》是由郑保卫编著的一本关于数据库管理与优化的专业教材,主要针对数据库系统在实际应用中的性能提升和不同数据库的整合策略进行深入探讨。PDF课件形式使得读者可以方便地在线学习或...
在IT领域,数据库优化是确保系统性能的关键环节,特别是对于SQL Server这样的大型关系型数据库管理系统。本文将深入探讨SQL数据库的优化方法,包括网络优化、硬件优化、操作系统优化、数据库参数调整以及应用程序...
Oracle数据库优化是一门深入的技术领域,它关系到数据库性能的提升和资源的高效利用。本文针对Oracle数据库的优化提供了详尽的指导和案例分析,尤其强调了在CBO(Cost-Based Optimizer,基于成本的优化器)模式下的...
数据库优化包括多个方面,如索引优化、查询优化和存储优化。在Access中,可能需要检查和调整索引以提高查询速度,分析查询性能,以及合理分配内存资源。C#可以通过执行存储过程或者自定义的SQL脚本来完成这些任务,...
在SQL Server 2005中,数据库优化是提高系统性能和效率的关键环节。本文将介绍两种主要的数据库优化工具:SQL Server Profiler和数据库引擎优化顾问(Database Engine Tuning Advisor),以及它们如何帮助DBA们更好...
进行Oracle数据库优化是提升系统性能、确保数据高效稳定运行的关键。本次基础培训将重点聚焦在SQL语句性能优化、数据库的常用管理命令以及常见问题处理上。 一、Oracle之SQL语句性能优化 SQL(Structured Query ...
Oracle数据库优化是一项系统工程,涉及程序设计、操作系统优化、硬件配置、数据库配置以及SQL语句等多个层面。为了提高Oracle数据库的性能,需要对这些层面进行综合考虑,逐一优化。 首先,硬件优化是基础,主要...
( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面.rar ) ( 数据库优化方面...
数据库优化培训课件,供大家一起参考学习。
Oracle数据库优化是一个复杂而关键的领域,涉及到许多层面,包括SQL查询优化、索引策略、内存结构调整、数据库架构设计以及硬件配置等。以下将详细阐述这些知识点。 首先,SQL查询优化是数据库优化的核心部分。...
接下来,"数据库SQL优化总结之百万级数据库优化.pdf"可能深入到实际的优化实践。 1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与...