- 浏览: 458498 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
原文:
http://www.blogjava.net/youling/archive/2009/03/06/243177.html
PS:对原文最后部分作少小修改
这篇似乎也不错:
http://www.phpchina.com/html/96/1296-4555.html
http://maxclapton.comoj.com/?p=210
但是select 先还是order by先?
这个测试一下,应该是看执行过程。
一、sql语句的执行步骤:
1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。
2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。
3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。
4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式。
5)选择优化器,不同的优化器一般产生不同的“执行计划”
6)选择连接方式, ORACLE 有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。
7)选择连接顺序, 对多表连接 ORACLE 选择哪一对表先连接,选择这两表中哪个表做为源数据表。
8)选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。
9)运行“执行计划”
二、oracle 共享原理:
ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享。
当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,ORACLE就能很快获得已经被解析的语句以及最好的执行路径.。这个功能大大地提高了SQL的执行性能并节省了内存的使用。
三、oracle 语句提高查询效率的方法:
1:where column in(select * from ... where ...);
2:... where exists (select 'X' from ...where ...);
第二种格式要远比第一种格式的效率高。
在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。
使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,
这就节省了时间Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。
避免使用having子句。HAVING 只会在检索出所有记录之后才对结果集进行过滤。
这个处理需要排序,总计等操作。如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。
四、SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、select 的字段;
8、使用order by对结果集进行排序。
发表评论
-
数据库的一些概念
2012-10-30 13:12 677Web里面,数据库占了半壁江山, 本着PC有价数据无价,DBA ... -
SQLite
2011-11-17 16:52 673官方主页:http://www.sqlit ... -
一些表的概念
2011-09-13 09:59 466平行表 预处理表 流水表 记账表 -
Oracle__View
2011-08-11 10:03 546http://database.51cto.com/art/2 ... -
Oracle__跨库映射
2011-02-23 11:42 526http://blog.csdn.net/huzhenwei/ ... -
Oracle__运行中的SQL
2011-02-16 17:05 576运行中的SQL Select a.program,b.sp ... -
Oracle__数据字典__表结构
2011-02-11 10:02 980SQL> desc all_tab_columns ... -
Oracle__约束
2011-01-17 13:13 500约束查询: Select constraint_name ... -
Oracle__大表__索引__查询
2011-01-14 09:37 622http://hi.baidu.com/ak456/blog/ ... -
Oracle__undo__redo
2011-01-14 09:34 784http://space.itpub.net/8750110/ ... -
Oracle__序列Sequence
2011-01-11 16:50 674http://database.51cto.com/art/2 ... -
Oracle__系统信息
2011-01-04 11:53 523版本 Select * From v$Version; S ... -
Oracle__进程
2011-01-04 10:33 427Select a.username, a.machine, ... -
Oracle__日志
2010-09-02 17:19 749Oracle日志基本信息 http://zhidao.baid ... -
spool
2010-08-06 12:03 743set linesize 1000; set pag ... -
Oracle逻辑结构相关数据字典
2010-08-05 14:48 771http://space.itpub.net/1440192 ... -
Nvl( ) 函数
2010-08-05 11:05 661http://blog.chinaunix.net/u/2 ... -
InstantClient安装使用
2010-08-02 10:54 3223http://wudx.iteye.com/blog/4225 ... -
Oracle那些函数
2010-07-29 11:36 561mod左%右,求余abs绝对值upper转换为大字nvl替 ... -
dbms_random
2010-07-29 10:11 1632http://www.blogjava.net/wxqxs/a ...
相关推荐
解析(PARSE)—— 绑定(BIND)——执行(EXECUTE)——提取(FETCH 只有SELECT才需要这步) 解析 服务器进程接收到一个SQL语句时,首先要将其转换成执行这个SQL语句的有效步骤,这些步骤被称为执行计划。...
SQL*Plus 提供了一个非常实用的功能——自动跟踪(Auto Trace),它可以帮助用户分析 SQL 语句的执行情况,包括执行时间、资源消耗等关键性能指标。通过设置 Auto Trace,可以方便地获取 SQL 语句的执行计划...
通过分析执行计划,我们可以了解SQL语句的执行顺序和资源消耗,从而找到可能的性能瓶颈。 索引是SQL优化的重要工具,它可以显著加快数据检索速度。索引分为多种类型,包括B-tree索引和Bitmap索引。B-tree索引是一种...
本文将深入探讨影响SQL语句查询效率的关键因素,特别关注查询优化与LIKE语句的使用,帮助数据库管理员和开发人员识别并解决查询性能瓶颈。 ### 影响SQL查询效率的因素 #### 1. **处理NULL值** 当SQL查询涉及对...
《SQL语句大集合——从基础到进阶》 SQL(Structured Query Language)是数据库管理的语言,用于查询、插入、更新和删除数据。本资料集“SQL-grammer-collection.zip”是一个全面的SQL语句大全,分为基础部分和提升...
执行计划的顺序通常表示了Oracle数据库执行SQL语句的步骤顺序。了解执行计划的真实执行顺序有助于我们理解哪些操作是并行的,哪些是顺序的,以及如何影响最终查询的性能。 为了读懂执行计划,通常需要实践和经验的...
#### 第一天:SQL简介 - **SQL简史**:SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它最初由IBM的三位研究人员于1974年提出,后来经过标准化,成为了一个广泛采用的数据访问语言。 - *...
` 显示创建数据库时使用的具体SQL语句,以验证其编码设置。 2. **创建、删除、查看表** - **删除表**:`DROP TABLE 表名;` 删除表,如果表不存在,可以使用 `IF EXISTS` 条件来避免错误,例如 `DROP TABLE IF ...
### 通过SQL语句实现行列转换的几种方法 在日常工作中,我们经常需要处理的数据结构并不总是按照我们期望的方式组织的。特别是在制作自定义报表或进行产品开发时,经常会遇到需要将数据从一种布局转换到另一种布局...
本文将深入探讨MSSQL(Microsoft SQL Server)环境下的高级注入技术——构造畸形SQL语句的方法,这种技术通常被用于加深盲注操作,即在无法直接看到查询结果的情况下,通过精心设计的SQL语句来获取所需的信息。...
### Oracle数据库SQL语句详解——SELECT查询与条件查询 #### 第一章 SELECT查询 ##### 1.1 基本语法 SELECT语句是Oracle数据库中最常用的查询数据的方法之一,其基本语法结构如下: ```sql SELECT <列名> FROM ...
11. 使用分号结束T-SQL语句:使用分号结束语句是符合ANSI标准的,且适用于多种数据库平台。SQL Server 2005开始,某些语句将强制需要使用分号,因此建议开发人员从现在开始就习惯使用。 12. 融入SQL Server社区:...
在使用SQL Profiler工具的过程中,开发者可以通过执行时间对SQL语句进行排序,从而精确地看到每一个数据库操作的执行顺序和时间,这对于掌握流程的执行细节至关重要。此外,SQL Profiler的界面简单直观,由菜单、...
标题:按某字段合并字符串之一(简单合并) 描述:将如下形式的数据按id字段合并value字段。...1、sql2000中只能用自定义的函数解决 create table tb(id int, value varchar(10)) insert into tb values(1,
在数据库管理中,SQL语句的优化是提升系统性能的关键环节。"基于索引的SQL语句优化之降龙十八掌"这一主题深入探讨了如何通过有效地利用索引来改进SQL查询效率,从而达到优化数据库操作的目的。这篇博客的作者通过一...
在这个SQL语句练习实例中,我们要找出公司的销售冠军,即每个地区的销量前三名的销售员及其对应的销售额。首先,我们创建了一个名为`salesdetail`的表,其中包含四个字段:`Area`(地区)、`Saler`(销售员姓名)、`...