posted @ 2008-08-19 22:07 Kathleen 阅读(5082) 评论(0) 推荐(0) 编辑
摘要:
1、检查被索引的列或组合索引的首列是否出现在PL/SQL语句的WHERE子句中,这是“执行计划”能用到相关索引的必要条件。 2、看采用了哪种类型的连接方式。ORACLE的共有Sort Merge Join(SMJ)、Hash Join(HJ)和Nested Loop Join(NL)。在两张表连接,且内表的目标列上建有索引时,只有Nested Loop才能有效地利用到该索引。SMJ即使相关列上建... 阅读全文
摘要:
一、目的: 1、说一说Oracle的Optimizer及其相关的一些知识。 2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。 3、如果你对 FIRST_ROWS、 ALL_ROWS这两种模式有疑惑时也可以看一下这篇文章。 Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工... 阅读全文
posted @ 2008-08-19 21:38 Kathleen 阅读(1551) 评论(0) 推荐(0) 编辑
摘要:
今天在本地数据库跟客户数据库执行了相同的查询,但是ORACLE的执行计划显示的却有很大差别。发现本地库都能利用到该使用的索引,而客户正式库上却不可以。一般遇到这种情况,很可能是索引失效了。这个时候需要重建索引: 1.通过这句话查看现用索引情况: Code Code highlighting produced by Actipro CodeHighlighter (freeware)... 阅读全文
posted @ 2008-08-19 20:58 Kathleen 阅读(908) 评论(1) 推荐(0) 编辑
摘要:
伪列(pseudocolumn)ROWNUM 中包含有当前的行号。很多人在第一次试图返回表中中间某段记录子集时,都会发现下面这种方法行不通: select * from all_objects where rownum between 30 and 49; 这种写法之所以行不通,是因为 ROWNUM 列只有在记录被取出或过滤时才会应用到记录上。第一行在被取出时会被抛出,因为它的 R... 阅读全文
posted @ 2008-08-17 23:50 Kathleen 阅读(2297) 评论(0) 推荐(1) 编辑
摘要:
Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 分页查询格式: Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1 SELECT * FROM 2 ( 3 SELECT A.*, ROWNUM RN 4 FR... 阅读全文
posted @ 2008-08-17 23:47 Kathleen 阅读(344) 评论(0) 推荐(0) 编辑
摘要:
表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401 2 2006... 阅读全文
posted @ 2008-08-17 11:06 Kathleen 阅读(187) 评论(0) 推荐(0) 编辑
摘要:
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的... 阅读全文
posted @ 2008-08-03 12:15 Kathleen 阅读(328) 评论(0) 推荐(0) 编辑
摘要:
晚上看到培的BLOG上的随笔,希望能用简单的方法实现。 uid rname 1 stefanie 1 google 1 sina 2 baidu 2 microsoft --------------- --想得到的结果 1 stefanie,google,sina 2 baidu,microsoft 我的实现方法: ALTER FUNCTION FUN_MER(@UID NVARCHA... 阅读全文
posted @ 2008-06-12 22:17 Kathleen 阅读(124) 评论(0) 推荐(0) 编辑