关于 select * from O1,O2......
至于为何要进行数据库优化,就不在这里重述了。
在做项目的时候,如何最大限度的提高sql的查询效率,应该是大家永远的话题:
在这里,将本着谨慎的,简单的态度,一点一点的讲述sql数据查询语句的优化问题:
一,关于索引:
使用索引的合理性:
条件子句中变量顺序应与索引字键顺序相同。(尽可能在join和order by 的字段上建立索引)将最具有限制性的条件放在前面,大值在前,小值在后。
eg:...where O.a <1000 and O.a>200 效率高于 where O.a>200 and O.a<1000
...where O.a between 200 and 1000 效率高于 where O.a>200 and O.a<1000
二,关于通配符:
避免采用MATCHES和LIKE通配符匹配查询:
由于采用like等通配符查询时,sql优化器实际上还是用顺序搜索的方法来查询的,也就是说,在被查询的字段上建立的索引实际上是不起作用的。
eg:...where O.b <‘12399’ and O.b>‘123000 ’ 效率高于 where O.b matche ‘123*’
三,关于子查询:
查询嵌套层次越多,效率越低,因此应当尽量避免子查询。假如子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
eg:...from O1,O2 where O1.c=O2.c and O2.a=2009 效率高于 from O1 where O1.c in(select O2.c from O2 where O2.a=2009)
四,关于顺序存取时的嵌套查询:
在进行大数据量的索引归类时,有些形式的where子句会强迫优化器使用顺序存取,从而使得原索引字段失效。
eg:...where (O.d = 123 and O.a>200 ) union O.b=1010 效率高于 where (O.d = 123 and O.b>200) or O.b=1010
五,关于临时表:
使用临时表加速查询
把表的一个子集进行排序并创建临时表,有时能加速查询。注意:临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下,注重不要丢失数据。
eg:...select unique tO1 into temp tO1 "然后(then)"select count(*)from temp tO1 效率高于select count(distinct)
六,关于聚集函数:
1.对于大数据量的求和应避免使用单一的sum命令处理,可采用group by方式与其结合,有时会大大提高效率。
2.避免会引起磁盘读写的 rowid* 等操作。在where子句中或select语句中,用rowid要产生磁盘读写,是一个物理过程,会影响sql性能。
sql优化比较复杂,且受环境限制,但开发过程中,写sql要遵循最起码的原则.如下:
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
例如:
(低效)
SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);
(高效)
SELECT … FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;
2.SELECT子句中避免使用’*’
当在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.可是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.
3. 使用表的别名(Alias)
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.
(Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属)
分享到:
相关推荐
Oracle公司内部数据库培训资料-Les01基本SQL SELECT语句 本资源涉及基本的SQL SELECT语句,主要涵盖了SELECT语句的基本功能、语法、操作符优先级、空值定义等方面的内容。 一、SELECT语句的基本功能 SELECT语句是...
10. SQL语句优化的技术手段:技术手段包括但不限于使用子查询优化、使用JOIN代替子查询、避免SELECT *、使用更有效的查询方法(如IN代替OR)、利用数据库提供的存储过程和函数减少网络往返次数等。 11. 经验与实践...
自己总结的一些关于SQL语句中Select语句常用的几种方法。里面有相信的说明,下载后查阅!
SQL Select 语句大全 SQL Select 语句是数据库管理系统中最基本也是最重要的语句之一,它用于从数据库中检索数据。在这个实验报告中,我们将总结各种 SQL Select 语句的用法和实例。 1. SELECT 语句的基本用法 ...
### SQL语句优化详解 #### 一、引言 在数据库设计与管理中,SQL语句的优化是一项至关重要的工作。合理的SQL优化不仅能显著提升数据处理速度,还能有效降低服务器资源消耗,从而提高整个系统的响应时间和用户体验。...
### SQL语句优化手册 #### 一、引言 随着信息技术的发展,数据库系统在各行业中扮演着越来越重要的角色。为了确保数据库系统能够高效地运行,SQL语句优化成为了提升系统性能的关键因素之一。SQL(Structured Query...
SQL 语句优化方法 30 例 SQL 语句优化是一种非常重要的数据库优化技术,目的是为了提高数据库的查询效率,减少查询时间,提高系统的整体性能。在 SQL 语句优化过程中,我们经常会用到 hint,今天我们将总结一下在 ...
本资源“最新整理的常用sql语句及优化大全”涵盖了SQL的基础使用和性能优化,对于数据库管理员、开发人员或是学习者来说,都是极具价值的学习资料。 一、SQL常用语句 1. **数据查询**:`SELECT`语句是SQL中最基本...
"SQL查询思路优化与语句优化" 本资源摘要信息旨在讨论SQL查询思路优化与语句优化的重要性和方法。数据库查询优化是一个关键因素,影响数据库的推广和应用。SQL查询是一个有序的查询,不同语句的使用和顺序将直接...
### SQL语句优化心得 #### 引言 在软件开发过程中,SQL语句的编写往往直接关系到应用程序的性能表现。特别是在系统初期阶段,由于数据量较小,即使编写了一些效率较低的SQL语句,也可能不会立即暴露出来。然而,...
SQL SELECT语句是数据库查询的核心,用于从数据库中检索数据。这个语句允许你指定要从哪个表中选取数据,以及选取哪些列。在本篇中,我们将深入探讨SELECT语句的基本结构、功能以及与其他工具(如iSQL*Plus)的差异...
浅谈VFP中的SQL SELECT语句 本文主要介绍了VFP中的SQL SELECT语句的使用和实现方法。SELECT语句是SQL语言中最基本和最重要的一种语句,用于从数据库中查询数据。VFP中的SELECT语句可以实现简单查询、排序和分组查询...
以上只是SELECT语句在MS SQL中部分应用的概述,实际上还有更多高级特性,如窗口函数、CTE(公共表表达式)、联接优化等。通过熟练掌握这些技巧,你将能够更有效地管理和分析你的数据库。在实践中不断探索和学习,将...
《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一系列实用且高效的策略。在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时...
SELECT语句是SQL语言中最基本也是最常用的查询语句,用于从数据库中提取所需的信息。例如,我们可能需要查询所有电影的名称和上映日期,SELECT语句可以写为:`SELECT MovieName, ReleaseDate FROM Movies`。如果需要...
在数据库管理中,UPDATE语句用于修改已存在的数据记录,而SELECT语句则用于...Oracle、MySQL和Informix都支持标准SQL,可以直接执行转换后的SELECT语句。了解这些转换技巧,可以帮助开发者更好地理解和调试数据库操作。
### SQL 查询语句优化 #### 一、引言 在当今大数据时代,高效的数据处理能力对于任何企业都至关重要。SQL作为关系型数据库的标准查询语言,其性能直接影响着系统的响应时间和资源消耗。尤其对于大型数据库系统而言...
Oracle数据库的SQL SELECT语句是数据查询的核心工具,主要用于从数据库中检索信息。在本教程中,我们将深入了解如何编写基本的SQL SELECT语句及其主要功能。 首先,SQL SELECT语句有三个主要功能: 1. **列选择**...