1. 尽量不要使用 or,使用or会引起全表扫描,将大大降低查询效率。
2.alice like '%"&abigale&"%' 会使索引不起作用(针对sqlserver)
3.经过实践验证,charindex()并不比前面加%的like更能提高查询效率,并且charindex()会使索引失去作用(指sqlserver数据库)
4.字段提取要按照“需多少、提多少”的原则,避免“select *”,尽量使用“select 字段1,字段2,字段3........”。实践证明:每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看您舍弃的字段的大小来判断。
5. order by按聚集索引列排序效率最高。一个sqlserver数据表只能建立一个聚集索引,一般默认为ID,也可以改为其它的字段。
6.能使用exists和not exists尽量使用,避免使用in或not in
7.能使用表连接尽量使用,避免使用exists和not exists
8.SET NOCOUNT ON
9.正确使用UNION和UNION ALL
10.慎用SELECT DISTINCT
11.少用游标
12. 使用表的别名(Alias):
当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个Column上,这样可以减少解析的时间并减少那些由Column歧义引起的语法错误。
.尽量少使用游标 原因很简单;就是游标的算法是最原始的计算机算法(和for.if等语句一样,一条条搜索来算;效率极低); 而sql语句用的是集合运算;速度则快的多;如果用索引速度则很快(用了指针).
2.创建索引. a.聚集索引: 聚集索引是磁盘存储和逻辑显示是一样的 mssql表的主键一般是聚集索引;主键(每一条记录唯一确定); 创建的主键自动会是聚集索引; 如有一个非常大的表(有百万行);很长时间磁盘存储上会有类似碎片(磁盘填充率效率低;一般是频繁删除造成的); 要提高它的性能的最简洁办法是:把这个表的主键去掉再保存后;然后重新设主键再保存; (这个表就会在磁盘上重新整理排序;性能当然会提高哟) b.非聚集索引: 非聚集索引是在外面建立小的附加表(一种树形结构;大多数是B或B+树); 读(遍历select等sql语句)表特快;但写(update;delete.insert等sql语句)表性能会略微下降. 针对数据量大的表建议非聚集索引不要超过3个(节省额外磁盘负担). 不要给类似“性别”列创建索引.
3.死锁: 是指有线程在读一条记录;别的线程读这条记录就要等待; 在mssql中只要长期占那条记录的线程去掉;死锁就会解除. 在mssql中锁是针对每一行记录(所以性能不错). 经常产生锁的原因有: a.在sql语句中使用事务语句(特别是事务中当查询比较耗时). b.在前台的应用程序的connetion冲突(未关闭). c.多表联合查询(尤其是在打开大的数据集时).
4.sql语句优化 a.'is null' 'not' 'or' 'in'不会用索引 b.避免在索引列上使用计算或函数处理(索引会大失性能).还有'%';有的甚至会全失索引性能 c.SELECT中避免使用 ‘ * ‘(宁可把需要字段列出来;而不要用*去把所有的字段都列出来). d.避免相关子查询(select中套select). e.where的条件中'=>exists>in'(指性能) f.'order by' 'group by' 'having' 'distinct'等语句要慎用(因为它们效率不高;它们是先把数据到临时表中再进行处理的). g.聚集索引如有2个字段组成(tt1和tt2);tt1在前面;where的条件中如只用tt1字段来判断;就会用到一半的聚集索引; where的条件中如tt1和tt2字段都用来判断了;就会全用到聚集索引; where的条件中如只用tt2字段来判断;就会用不到聚集索引了;
5.尽量不要使用TEXT数据类型 除非你使用TEXT处理一个很大的数据,否则不要使用它。因为它不易于查询,速度慢,用的不好还会浪费大量的空间。 一般的,VARCHAR可以更好的处理你的数据。
6.尽量不要使用临时表 尽量不要使用临时表,除非你必须这样做。一般使用子查询可以代替临时表。使用临时表会带来系统开销, 如果前台的代码你是使用数据库连接池而临时表却自始至终都存在。SQL Server提供了一些替代方案,比如Table数据类型。
7.尽量少使用外键和触发器。 因为在mssql中这些功能的性能做得不是很好;随便动一下表(它就会到相关的表去搞判断;有很多情况并不需要);在后台消耗资源大. 宁可在前台多写些相关表的操作的代码.
|
分享到:
相关推荐
数据库查询优化是数据库管理系统中的关键环节,其目的是在满足用户查询需求的同时,尽可能地提高查询效率,减少资源消耗。在数据库领域,有三种经典的查询优化算法:基于成本的优化、基于规则的优化以及动态规划优化...
本文将深入探讨Oracle数据库查询优化的各种方法和技术。 首先,我们从SQL语句的编写入手。良好的SQL编写习惯是优化的基础。应避免使用全表扫描,尽可能利用索引来加速查询。索引是数据库中用于快速查找记录的一种...
"遗传算法和实时数据库规则结合的数据库查询优化方案设计" 本文旨在结合遗传算法和实时数据库规则,设计一个数据库查询优化方案。数据库的建立是实现各种类型事务查询的关键,而现有的查询处理系统无法满足实时...
### 分布式数据库查询优化详解 #### 一、背景与挑战 随着信息技术的快速发展和各行各业对数据处理需求的增加,...通过上述方法和技术的应用,可以有效地优化分布式数据库的查询性能,提高系统的整体效率和用户体验。
但是根据标题“分布式数据库查询优化方法.pdf”以及标签“分布式、分布式系统、分布式开发、参考文献、专业指导”,我们可以推断出该文档应该讨论的是关于分布式数据库查询优化的相关技术与方法。下面我将基于这一...
本文档是一篇关于“数据库查询优化策略分析”的毕业论文,主要研究如何提升数据库查询效率,内容包括基于索引的优化策略和SQL语句的优化方法。随着信息技术的发展,数据库在各行各业中的重要性日益凸显,数据库查询...
ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析 ORACLE数据库参数优化与分析
根据提供的文件信息,本文主要讨论了改进粒子群优化算法在数据库查询优化中的应用,并...通过理论分析和实验验证,改进算法在数据库查询速度、准确性和优化方案质量方面均表现出色,证明了其在实际应用中的高实用价值。
【Oracle数据库查询优化方法研究】 Oracle数据库是当前广泛应用的关系型数据库之一,因其强大的数据存储能力和多用户高并发的优秀性能而备受大型企业青睐。优化Oracle数据库的查询效率对于提升整体系统性能至关重要...
本文 Introduced基于MS SQL Server数据库的查询优化方法,讨论了查询优化的基本原理和MS SQL Server的查询优化方法,并提出了查询优化的指导性策略和实用方法,以提高MS SQL Server数据库的查询效率。
分布式数据库查询处理优化算法分析 随着时代的发展,分布式数据库在各行业中的应用也越来越广泛,分布式数据库系统是数据系统和计算机网络进行结合的产物,其目的是为了可以使计算机网络中实现数据的分布于处理。...
Oracle 数据库索引优化方法探析是指通过对 Oracle 数据库索引的分析和优化,以提高数据库的查询效率和性能。 Oracle 数据库索引是一种数据结构,用于快速访问数据库表的特定信息。通过索引的小 I/O 操作可以替代大的...
查询提示允许开发者指导数据库优化器选择特定的执行路径。例如,强制使用某个索引或避免使用临时表。同时,理解查询执行计划有助于识别性能瓶颈,优化查询语句。 6. **减少数据冗余**: 数据冗余可能导致一致性...
从含义与优势方面探讨了关系数据库语言SQL概况,论述了基于关系数据库SQL的查询方法,提出了基于关系数据库SQL的优化技术:更新系统统计信息、优化系统产品设计、合理使用系统索引、避免或简化排序、使用存储过程、改进...
因此,研究并实施有效的Oracle数据库查询优化方法,对于提高企业信息系统性能具有重要的实际意义。 查询命中率是衡量数据库性能的一个重要指标,它反映了查询操作中数据从内存中获取的频率。高命中率意味着较少的...
以下是对基于SQL Server数据库查询优化的一些关键知识点的详细分析: 首先,优化数据库结构是提高查询效率的基础。在设计数据库时,对包含数值信息的字段采用数字型字段而非字符型字段,能够提高查询和连接的性能,...
在介绍数据库分页优化技术时,首先应当明确传统分页查询方法所存在的问题。在传统方法中,分页查询通常采用(limit, offset)方式,但这种方式随着数据量的增长及翻页数量的增加,查询效率会显著降低。尤其在数据量较...