高效SQL语句必杀技

No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得 上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表 的类型,字段的...

2012-09-19 17:54:17

阅读数 313

评论数 0

DISTINCT和GROUP BY的区别

其实二者没有什么可比性,但是对于不包含聚集函数的GROUP BY操作来说,和DISTINCT操作是等价的。不过虽然二者的结果是一样的,但是二者的执行计划并不相同。 在Oracle9i中: SQL> SELECT * FROM V$VERSION; BAN...

2012-09-08 11:52:56

阅读数 469

评论数 0

FIRST_ROWS优化模式语言排序模糊匹配问题

标题比较长,不过只有这样才能把问题描述清楚。 问题详细描述为,在FIRST_ROWS优化模式下,将会话排序和比较方式设置为语义模式,即忽略大小写模式,对字段进行LIKE模糊查询,可能导致错误的结果。 关于大小写不敏感的查询的详细描述,可以参考:http://yangtingkun.it...

2012-09-08 11:37:56

阅读数 365

评论数 0

在Oracle中进行大小写不敏感的查询

在Oracle中,命令和对象名称都是大小写不敏感的,因为Oracle在处理语句时,将所有的名称和命令全部转化为大写。 但是对于字符串中的字符,无论是比较还是排序,都是大小写敏感的。这在Oracle是默认方式,但不是唯一的方式。 下面看一个简单的例子: SQL> ...

2012-09-08 11:37:21

阅读数 698

评论数 0

分页查询的排序问题

最近看了数据仓库中分析函数的部分,发现RANK等函数还有基于假设条件进行查询的功能。 对于RANK分析函数的功能,大多数人都不陌生,这个函数可以返回排名,看一个简单的例子: SQL> CREATE TABLE T AS 2 SELECT ROWNUM ID,...

2012-09-08 11:35:44

阅读数 323

评论数 0

Oracle分页查询格式11

前几天有个网友问到,为什么这个系列的大部分例子中都没有包括查询条件。 其实分页只是一种标准的写法,分页嵌套的业务SQL才是实现查询功能的关键,而这部分可能会很简单,也可能会复杂的很。因此很难模拟各种复杂的业务SQL在分页中的表现。如果要分析分页查询,只能依旧不同业务SQL的特性进行分类,比如...

2012-09-08 11:27:22

阅读数 403

评论数 0

Oracle分页查询格式10

上一篇文章已经介绍了利用分析函数来进行分页的方法,总的来说,除非分页到了最后部分,利用分析函数进行分页的效率还是可以的。 综合来说,除了SQL嵌套可以少写一层外,并没有什么特别的优点来代替标准分页函数的写法。 不过上一篇测试所有的数据都是通过全表扫描得到的,如果在排序字段上存在索引,这...

2012-09-08 11:26:53

阅读数 340

评论数 0

Oracle分页查询格式9

Oracle从8i推出了分析函数,9i中分析函数进一步发展,而且已经很稳定了。 利用分析函数的功能,一样可以实现分页的功能。 首先还是构造一张大表,作为分页查询的测试表: SQL> CREATE TABLE T AS  2 SELECT /*+ NO_MERGE(A) N...

2012-09-08 11:26:15

阅读数 409

评论数 0

Oracle分页查询格式8

Oracle10g的新功能GROUP BY STOPKEY,使得Oracle10g解决了上一篇文章中提到的GROUP BY操作无法分页的问题。 在10g以前,Oracle的GROUP BY操作必须完全执行完,才能将结果返回给用户。但是Oracle10g增加了GROUP BY STOPKEY执...

2012-09-08 11:24:45

阅读数 323

评论数 0

Oracle分页查询格式

本文简单讨论一下包含GROUP BY、DISTINCT、UNIQUE等操作的分页查询语句。 由于包含上述的集操作,Oracle必须处理完所有的数据才会将结果全部的提交给用户。即使包含了ROWNUM,Oracle也只是在处理完所有的数据之后,将需要的数据进行返回。 不过并不是说前面提到的...

2012-09-08 11:23:31

阅读数 322

评论数 0

Oracle分页查询格式6

前面提到了对于集操作和聚集操作,使用标准的分页函数没有太大的意义,下面通过几篇文章专门讨论集操作和聚集操作的情况。这里首先讨论集操作的情况。 当查询需要分页时,大多数情况都会包含排序操作,因为如果缺少排序操作,很难保证分页返回的数据是连续不重复的。 因此这里只考虑包含排序的情况: ...

2012-09-08 11:23:02

阅读数 360

评论数 0

Oracle分页查询语句5

在文章的最后看一下ORDER BY STOPKEY和ORDER BY在翻页查询的最后几页的性能差异: SQL> CREATE TABLE T AS SELECT A.* FROM DBA_OBJECTS A, DBA_USERS B, TAB; 表已创建。 SQL> ...

2012-09-08 11:22:33

阅读数 253

评论数 0

Oracle分页查询语句4

这篇文章通过例子说明分页查询使用的NESTED LOOP操作,在分页查询翻到最后几页时的性能问题: SQL> CREATE TABLE T AS SELECT * FROM DBA_USERS; 表已创建。 SQL> CREATE TABLE T1 AS SELECT...

2012-09-08 11:22:02

阅读数 353

评论数 0

Oracle分页查询格式3

前面的各种例子已经说明了分页查询语句的标准写法所带来的性能提升。 这里简单总结一下,并简单的说明分页查询语句在何时无法带来性能提升。 分页查询语句之所以可以很快的返回结果,是因为它的目标是最快的返回第一条结果。如果每页有20条记录,目前翻到第5页,那么只需要返回前100条记录都可以满足...

2012-09-08 11:21:22

阅读数 335

评论数 0

Oracle分页查询语句2

最后的例子说明内部循环包含排序的情况: SQL> CREATE TABLE T AS SELECT * FROM DBA_OBJECTS; 表已创建。 SQL> CREATE INDEX IND_T_OBJECT_NAME ON T (OBJECT_NAME); ...

2012-09-08 11:12:32

阅读数 314

评论数 0

Oracle的分析函数(解析函数)说明

一。解析函数的说明 分析函数是甲骨文8中引入的一个概念,为我们分析数据提供了一种简单高效的处理方式。   官方对分析函数的说明如下: 分析功能计算,总价值基础上的一组行。它们的不同之fromaggregate函数,因为它们为每个组返回多行。groupof行被称为一个窗口,并...

2012-09-06 10:11:39

阅读数 718

评论数 0

Oracle 行列转换 总结

行列转换包括以下六种情况:   1. 列转行   2. 行转列   3. 多列转换成字符串   4. 多行转换成字符串   5. 字符串转换成多列   6. 字符串转换成多行   首先声明,有些例子需要如下10g及以后才有的知识:   A. 掌握model子句,   B...

2012-09-06 10:09:44

阅读数 213

评论数 0

ROLLUP 与 CUBE 运算符的使用

对于数据的汇总,是数据库经常用到的任务之一,除了我们通常使用的GROUP BY分组配合聚合函数对数据汇总,以及使用UNION ALL 对数据汇总之外,SQL还提供了 GROUP BY Col1,Col2.. WITH CUBE | ROLLUP,以及COMPUTE BY 等汇总方式,本文主要介绍了...

2012-09-04 17:55:43

阅读数 255

评论数 0

ROLLUP与CUBE运算符

--============================================= -- SQL 基础--> ROLLUP与CUBE运算符实现数据汇总 --=============================================       在使用ROL...

2012-09-04 17:55:16

阅读数 434

评论数 0

使用优化器性能视图获取SQL语句执行环境

Oracle SQL语句的运行环境分为多个不同的层次,主要包括实例级别,会话级别,语句级别,其优先级依次递增。即语句级别的执行环境具 有最高的优先权,会话级别次之,实例级别最低。反过来,实例级别的环境设置影响全局,而会话级别的则影响当前会话,语句级别的设置当然 也就只影响当前语句。由此可知,运...

2012-08-31 17:11:55

阅读数 359

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭