Select语句完整的执行顺序
- 格式:doc
- 大小:34.00 KB
- 文档页数:6
select语句的基本用法SELECT语句用于从数据库表中检索数据。
它的基本用法如下:1. 选择所有列:使用通配符*来选择所有列,例如:SELECT * FROM table_name;2. 选择特定列:指定要查询的列名,用逗号分隔多个列名,例如:SELECT column1, column2 FROM table_name;3. 使用别名:使用AS关键字给列名或表名指定别名,例如:SELECT column1 AS alias1, column2 AS alias2 FROMtable_name;4. 按条件选择数据:使用WHERE子句来筛选满足指定条件的行,例如:SELECT * FROM table_name WHERE condition;5. 对查询结果排序:使用ORDER BY子句来按照指定列的升序或降序对结果进行排序,例如:SELECT * FROMtable_name ORDER BY column1 ASC;6. 限制结果集大小:使用LIMIT关键字来限制查询结果的数量,例如:SELECT * FROM table_name LIMIT 10;7. 消除重复行:使用DISTINCT关键字来消除查询结果中的重复行,例如:SELECT DISTINCT column1, column2 FROM table_name;8. 连接多个表:使用JOIN语句来连接多个表,根据指定的条件关联它们的行,例如:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column1;9. 聚合函数:使用聚合函数对数据进行操作,例如:SELECT COUNT(column1) FROM table_name;10. 分组和过滤结果:使用GROUP BY和HAVING子句来对结果进行分组和过滤,例如:SELECT column1,COUNT(column2) FROM table_name GROUP BY column1 HAVING COUNT(column2) > 10.。
SELECT 语句的完整语法为:SELECT[ALL|DISTINCT|DISTINCTROW|TOP]{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,… ]]}FROM tableexpression[,… ][IN externaldatabase][WHERE… ][GROUP BY… ][HAVING… ][ORDER BY… ][WITH OWNERACCESS OPTION]说明:用中括号 ([]括起来的部分表示是可选的,用大括号 ({}括起来的部分是表示必须从中选择其中的一个。
1 FROM子句FROM 子句指定了 SELECT 语句中字段的来源。
FROM 子句后面是包含一个或多个的表达式 (由逗号分开 ,其中的表达式可为单一表名称、已保存的查询或由INNER JOIN 、 LEFT JOIN 或 RIGHT JOIN 得到的复合结果。
如果表或查询存储在外部数据库,在 IN 子句之后指明其完整路径。
例:下列 SQL 语句返回所有有定单的客户:SELECT OrderID,Customer.customerIDFROM Orders CustomersWHERE Orders.CustomerID=Customers.CustomeersID2 ALL、 DISTINCT 、 DISTINCTROW 、 TOP 谓词(1 ALL 返回满足 SQL 语句条件的所有记录。
如果没有指明这个谓词,默认为ALL 。
例:SELECT ALL FirstName,LastNameFROM Employees(2 DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。
(3 DISTINCTROW 如果有重复的记录,只返回一个(4 TOP显示查询头尾若干记录。
也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中 N 表示百分比例:返回 5%定货额最大的定单SELECT TOP 5 PERCENT*FROM [ Order Details]ORDER BY UnitPrice*Quantity*(1-Discount DESC3 用 AS 子句为字段取别名如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用 AS 保留。
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、使用order by对结果集进行排序。
另外:一个查询语句各个部分的执行顺序:--8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>--(1) FROM <left_table>--(3) <join_type> JOIN <right_table>--(2) ON <join_condition>--(4) WHERE <where_condition>--(5) GROUP BY <group_by_list>--(6) WITH {CUBE | ROLLUP}--(7) HAVING <having_condition>--(10) ORDER BY <order_by_list>SQL Select语句完整的执行顺序2008-05-30 12:09SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;以下结论是通过在Sql Server2000上的实验得出的结论,也可通过查看估计的执行计划(Ctrl+L)来查看执行顺序。
1.先执行等号(=)左边是变量的表达式(A类),再执行等号(=)左边是列名的表达式(B类)。
例:update tablename set columnName=@variable,@variable=@variable+1先执行@variable=@variable+1,再执行columnName=@variable2.如果有多个A类(或B类)表达式,按从左到右顺序执行A类(或B类)表达式。
一、概述二、SQL SELECT语句基本结构1. SELECT子句2. FROM子句3. WHERE子句4. GROUP BY子句5. HAVING子句6. ORDER BY子句三、GROUP BY子句的作用和用法1. GROUP BY子句的作用2. GROUP BY子句的语法四、GROUP BY子句与聚合函数的配合1. COUNT函数2. SUM函数3. AVG函数4. MIN函数5. MAX函数五、GROUP BY子句的逻辑执行顺序1. SQL语句的逻辑执行顺序2. GROUP BY子句的执行顺序六、注意事项及常见问题1. GROUP BY子句的字段顺序2. 使用GROUP BY时的注意事项3. 常见错误及解决方法七、总结---概述SQL是一种用于数据库管理的标准化语言,可以进行数据的查询、更新、添加以及删除等操作。
在SQL中,SELECT语句是最常用的查询语句之一,它用于从数据库中检索数据。
而在SELECT语句中,GROUP BY子句则是用来对查询的结果进行分组和汇总的重要部分。
本文将着重介绍SQL SELECT中的GROUP BY逻辑,帮助读者更好地理解和应用这一功能。
SQL SELECT语句基本结构让我们来回顾一下SQL SELECT语句的基本结构,以便更好地理解GROUP BY子句的作用和逻辑。
一个完整的SELECT语句包括以下几个部分:1. SELECT子句:用于指定要查询的字段,可以是某些具体的字段,也可以是通配符。
2. FROM子句:用于指定要查询的数据表。
3. WHERE子句:用于指定查询条件,对数据表中的记录进行筛选。
4. GROUP BY子句:用于对查询结果进行分组,常与聚合函数一同使用。
5. HAVING子句:用于对分组结果进行筛选。
6. ORDER BY子句:用于对查询结果进行排序。
GROUP BY子句的作用和用法GROUP BY子句的作用非常明显,即对查询结果进行分组。
其中,[ ]表示可选项,SELECT子句是必选的,其他子句都是可选的。
下面具体说明语句中各参数的含义。
“SELECT子句用来指定由查询返回的列(字段、表达式、函数表达式、常量)。
基本表中相同的列名表示为:〈表名〉、〈列名〉。
“INTO子句用来创建新表,并将查询结果行插入到新表中。
“FROM子句用来指定从中查询行的源表。
可以指定多个源表,各个源表之间用“,”分割;若数据源不在当前数据库中,则用“〈数据库名〉.〈表名〉”表示;还可以在该子句中指定表的别名,定义别名表示为:〈表名〉as〈别名〉。
“WHERE子句用来指定限定返回的行的搜索条件。
“GROUP BY子句用来指定查询结果的分组条件,即归纳信息类型。
“HAVING子句用来指定组或聚合的搜索条件。
“ORDER BY子句用来指定结果集的排序方式。
“COMPUTE子句用来在结果集的末尾生成一个汇总数据行。
由于SELECT语句本身的复杂性,本书只介绍一些常用的子句和选项。
本章后面将介绍部分最常用的子句的用法。
6.1.2 查询特定列的信息从表中查询特定列的信息的SELECT语句的主要用法是:SELECT [ALL︱DISTINCT][TOP n]{*︱{column_name︱expression}[[AS]column_alias]}[,…n]FROM table_source其中,[ ]表示可选项,{ }表示必选项,︱表示只能选一项,[,…n]表示前面的项可重复n次。
语法选项说明如下:“ALL 表示在查询结果数据集中显示查询到的全部行。
“DISTINCT 从SELECT语句的结果中除去重复的行,若此项为空,则默认为ALL,即显示查询到的所有行。
“TOP n 用于在查询结果数据集中显示查询到的前n行数据(n 为整数)。
示意图“* 表示表中所有的列。
“column_name 表示列名。
“expression(表达式)可以是列名、常量、函数,以及由运算符连接的列名、常量和函数的任意组合,或者是子查询。
sql语句中各个条件执行顺序SQL语句中各个条件的执行顺序是根据查询语句中的关键字和语法规则确定的。
以下是关于SQL语句中各个条件执行顺序的十个例子:1. SELECT语句执行顺序:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY- 首先执行FROM子句,确定要查询的表或视图。
- 然后执行WHERE子句,对表中的记录进行筛选。
- 接下来执行GROUP BY子句,按指定的列对查询结果进行分组。
- 然后执行HAVING子句,对分组后的结果进行筛选。
- 然后执行SELECT子句,选择要查询的列。
- 最后执行ORDER BY子句,对结果进行排序。
2. WHERE子句中的条件执行顺序:括号内的条件 -> NOT -> AND -> OR- WHERE子句中的括号内的条件首先执行。
- 然后执行NOT操作符指定的条件。
- 接下来执行AND操作符指定的条件。
- 最后执行OR操作符指定的条件。
3. JOIN语句中的条件执行顺序:ON -> USING- JOIN语句中的ON条件首先执行,指定连接两个表的条件。
- 如果使用USING关键字,则在ON条件之后执行,指定连接两个表的共同列。
4. GROUP BY子句中的条件执行顺序:列名 -> 表达式 -> 别名- GROUP BY子句中的列名首先执行,按照指定的列进行分组。
- 然后执行表达式,对查询结果进行分组。
- 最后执行别名,对查询结果进行分组。
5. HAVING子句中的条件执行顺序:列名 -> 表达式 -> 别名- HAVING子句中的列名首先执行,对分组后的结果进行筛选。
- 然后执行表达式,对分组后的结果进行筛选。
- 最后执行别名,对分组后的结果进行筛选。
6. SELECT子句中的条件执行顺序:列名 -> 表达式 -> 别名- SELECT子句中的列名首先执行,选择要查询的列。
一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段。
SELECT nickname,email FROM testtable WHERE name= '张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:SELECT * FROMtesttable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:SELECT TOP 2 * FROMtesttableSELECT TOP 20 PERCENT * FROMtesttable(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
一、引言在Go语言中,select语句用于处理通道和并发操作,在一些情况下,使用select语句时需要考虑选择case的顺序。
本文将就golang select case的顺序问题展开讨论,分析其影响和解决方法。
二、select语句概述1. select语句是Go语言中用于处理并发操作的重要语句,它可以使程序在多个通道上等待数据到来,并在其中任意一个通道准备就绪时执行相应的代码块。
2. select语句由多个case组成,每个case代表一个通道操作,包括发送和接收操作。
当有多个case准备就绪时,select语句会随机选择一个case执行。
三、golang select case的顺序1. 在使用select语句时,case的顺序并不会影响通道操作的选择,因为select语句会随机选择一个准备就绪的case执行。
例如:```goselect {case <-ch1:// 处理ch1数据case <-ch2:// 处理ch2数据}以上代码中,无论ch1和ch2哪个通道准备就绪,select语句都会随机选择一个case执行。
2. case的顺序可能会影响程序的逻辑执行顺序。
如果程序需要按照特定的顺序执行某些操作,那么就需要谨慎选择case的顺序。
例如:```goselect {case <-ch1:// 处理ch1数据case <-ch2:// 处理ch2数据default:// 执行默认操作}```以上代码中,如果ch1和ch2都没有准备就绪,那么select语句会执行default操作。
此时,default操作的执行顺序与case的顺序有关。
四、影响因素1. 通道的缓冲大小:在进行通道接收操作时,如果通道中有多个元素准备就绪,那么select语句会随机选择一个case执行。
通道的缓冲大小可能影响这个选择过程。
2. 程序逻辑:程序的逻辑结构也会影响select语句中case的选择顺序。
JavaScript中的select语句用于在多个选项中选择一个执行特定的代码块。
以下是有关select语句的一些基本用法:1.select语句使用关键字“switch”表示,后面跟着被选择的表达式。
2.select语句中,使用关键字“case”表示每个选项,后面跟着一个可选的常量表达式。
3.在每个case中,可以定义要执行的代码块。
4.在每个case代码块的末尾,使用关键字“break”来终止该特定case的代码执行。
5.如果没有一个case匹配,可以使用关键字“default”定义一个默认执行的代码块。
6.当匹配到一个case时,执行该case之后的代码,除非遇到了break语句。
7.select语句的代码块可以包含其他语句和嵌套代码块。
8.每个case中的常量表达式可以是数字、字符串、布尔值等类型。
9.select语句可以根据不同的情况执行不同的代码块。
10.select语句是用于避免使用多个if-else语句的一种更简洁的方式。
11.select语句可以帮助提高代码的可读性和可维护性。
12.在select语句中,每个case的常量表达式需要与被选择的表达式具有相同的数据类型。
13.select语句中的case代码块可以为空,此时会继续执行下一个case。
14.select语句中的default代码块可以放在任意位置,但通常放在最后。
15.select语句中的default代码块只有当没有任何case匹配时才会执行。
16.select语句中的case代码块的顺序很重要,先匹配的case会被执行。
17.可以在case代码块中使用其他控制流语句,如if语句、循环等。
18.在select语句中,如果不使用break语句,会继续执行下一个case的代码块。
19.可以使用select语句嵌套来实现更复杂的多级选择逻辑。
20.使用合适的缩进和注释可以提高代码的可读性和可维护性。
sql语句逻辑顺序-回复[SQL语句逻辑顺序]在数据库操作中,SQL语句的顺序对于执行结果的准确性和效率有着重要的影响。
本文将介绍SQL语句的逻辑顺序,并详细解释每一步的作用和执行顺序。
1. SELECT子句:在SQL语句中,SELECT子句是用来指定要查询的列或表达式。
在执行SQL 语句时,首先会解析SELECT子句,根据子句的内容来决定查询的是哪些列,并计算表达式的值。
SELECT子句通常是SQL语句的起始部分。
2. FROM子句:在FROM子句中,指定要查询的表名或视图名。
执行SQL语句时,数据库会根据FROM子句中指定的表或视图来获取数据,然后根据SELECT 子句中指定的列或表达式来进行计算或筛选。
3. WHERE子句:WHERE子句用来指定查询的条件。
在执行SQL语句时,数据库会根据WHERE子句中指定的条件筛选出符合条件的数据。
WHERE子句通常包含比较运算符、逻辑运算符和通配符等,用来对数据进行过滤和筛选。
4. GROUP BY子句:在GROUP BY子句中,可以指定要对查询结果进行分组的列。
执行SQL 语句时,数据库会根据GROUP BY子句中指定的列对查询结果进行分组,并对每个组进行聚合操作。
通常在GROUP BY子句中会使用聚合函数,如SUM、COUNT、AVERAGE等。
5. HAVING子句:HAVING子句用于对分组后的数据进行筛选。
在执行SQL语句时,数据库会根据HAVING子句中指定的条件筛选出符合条件的分组。
HAVING 子句通常包含比较运算符、逻辑运算符和聚合函数等。
6. ORDER BY子句:ORDER BY子句用于对查询结果进行排序。
在执行SQL语句时,数据库会根据ORDER BY子句中指定的列或表达式对查询结果进行排序。
ORDER BY子句通常包含升序(ASC)或降序(DESC)等关键字。
7. LIMIT子句:LIMIT子句用于限制查询结果的数量。
在执行SQL语句时,数据库会根据LIMIT子句中指定的数量限制查询结果的返回行数。
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、使用order by对结果集进行排序。
另外:一个查询语句各个部分的执行顺序:--8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>--(1) FROM <left_table>--(3) <join_type> JOIN <right_table>--(2) ON <join_condition>--(4) WHERE <where_condition>--(5) GROUP BY <group_by_list>--(6) WITH {CUBE | ROLLUP}--(7) HAVING <having_condition>--(10) ORDER BY <order_by_list>SQL Select语句完整的执行顺序2008-05-30 12:09SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;以下结论是通过在Sql Server2000上的实验得出的结论,也可通过查看估计的执行计划(Ctrl+L)来查看执行顺序。
1.先执行等号(=)左边是变量的表达式(A类),再执行等号(=)左边是列名的表达式(B类)。
例:update tablename set columnName=@variable,@variable=@variable+1先执行@variable=@variable+1,再执行columnName=@variable2.如果有多个A类(或B类)表达式,按从左到右顺序执行A类(或B类)表达式。
例:update tablename set columnName=@variable,@variable=@variable+1,@variable=2*@variable 先执行@variable=@variable+1,再执行@variable=2*@variable,最后执行columnName=@variable 3.列名所代表的值永远是原值。
例:update tablename set columnName=colunName+1,columnNameBagroup by在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。
在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数select max(sal),job emp group by job;(注意max(sal),job的job并非一定要出现,但有意义)查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。
select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。
在一个sql语句中可以有where子句和having子句。
having 与where 子句类似,均用于设置限定条件where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
查询每个部门的每种职位的雇员数select deptno,job,count(*) from emp group by deptno,job;Oracle SQL 性能优化技巧1.选用适合的ORACLE优化器ORACLE的优化器共有3种A、RULE (基于规则) b、COST (基于成本) c、CHOOSE (选择性)设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS 。
你当然也在SQL 句级或是会话(session)级对其进行覆盖。
为了使用基于成本的优化器(CBO, Cost-Based Optimizer) ,你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。
如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。
如果table已经被analyze过,优化器模式将自动成为CBO ,反之,数据库将采用RULE形式的优化器。
在缺省情况下,ORACLE采用CHOOSE优化器,为了避免那些不必要的全表扫描(full table scan) ,你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器。
2.访问Table的方式ORACLE 采用两种访问表中记录的方式:A、全表扫描全表扫描就是顺序地访问表中每条记录。
ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
B、通过ROWID访问表你可以采用基于ROWID的访问方式情况,提高访问表的效率, ROWID 包含了表中记录的物理位置信息。
ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。
通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
3.共享SQL语句为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中。
这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。
因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径。
ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用。
可惜的是ORACLE只对简单的表提供高速缓冲(cache buffering),这个功能并不适用于多表连接查询。
数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了。
当你向ORACLE提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句。
这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。
数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了。
共享的语句必须满足三个条件:A、字符级的比较:当前被执行的语句和共享池中的语句必须完全相同。
B、两个语句所指的对象必须完全相同:C、两个SQL语句中必须使用相同的名字的绑定变量(bind variables)。
4.选择最有效率的表名顺序(只在基于规则的优化器中有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM 子句中写在最后的表(基础表 driving table)将被最先处理。
在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。
当ORACLE处理多个表时,会运用排序及合并的方式连接它们。
首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并。
如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表。
5.WHERE子句中的连接顺序ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
6.SELECT子句中避免使用 ' * '当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 '*' 是一个方便的方法。
不幸的是,这是一个非常低效的方法。
实际上,ORACLE在解析的过程中,会将'*' 依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。
7.减少访问数据库的次数当执行每条SQL语句时,ORACLE在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等等。
由此可见,减少访问数据库的次数,就能实际上减少ORACLE的工作量。
8.使用DECODE函数来减少处理时间使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表。
9.整合简单,无关联的数据库访问如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)10.删除重复记录11.用TRUNCATE替代DELETE当删除表中的记录时,在通常情况下,回滚段(rollback segments ) 用来存放可以被恢复的信息。
如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况)。
而当运用TRUNCATE时,回滚段不再存放任何可被恢复的信息。
当命令运行后,数据不能被恢复。
因此很少的资源被调用,执行时间也会很短。
12.尽量多使用COMMIT只要有可能,在程序中尽量多使用COMMIT,这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少COMMIT所释放的资源:A、回滚段上用于恢复数据的信息。