- 浏览: 560439 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (340)
- Spring (4)
- Hibernate (2)
- Linux (34)
- Oracle (145)
- Eclipse (1)
- UML (1)
- HTML&&JAVASCRIPT (11)
- JAVA (33)
- 设计模式 (1)
- 版本控制 (1)
- wrap框架 (3)
- IBATIS (5)
- Ruby (1)
- DWR (1)
- MINA (11)
- JBPM (2)
- 缓存技术 (4)
- 网络 (3)
- 应用服务器 (1)
- GWT (5)
- 杂谈 (2)
- ICE (4)
- XML (2)
- ArcGis (2)
- Flex (8)
- junit单元测试 (1)
- SNMP (1)
- 存储 (1)
- office (1)
- MongoDB (0)
- Greenplum (3)
- 管理点滴 (1)
- C++ (6)
- 网络入门 (3)
- Tomcat (7)
- JMX (0)
- webservice (1)
- Oracle的10046事件 (1)
- Library cache内部机制详解 (1)
- expdp通过dblink来导入 (1)
最新评论
-
yuanliangding:
有没有关于mock的更多知识。
基于mock对象和JUnit框架简化Spring Web组件单元测试 -
saup007:
ssh端口不是22,怎么搞呢?
Greenplum 学习笔记 -
springmvc-freemarker:
java开源项目源码实例下载
Apache上全部JAVA开源项目简介 -
bobbell:
哇塞,你真厉害,整理的非常全面。我是一个java barcod ...
Greenplum 学习笔记 -
wsj55133245513324:
这不是bug,你将日志级别从debug提升到INFO 就好了 ...
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
在oracle中,我们经常以为建立了索引,sql查询的时候就会如我们所希望的那样使用索引,事实上,oracle只会在一定条件下使用索引,这里我们总结数第一点:oracle会在条件中包含了前导列时使用索引,即查询条件中必须使用索引中的第一个列,请看下面的例子 SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BONUS TABLE DEPT TABLE DUMMY TABLE EMP TABLE SALGRADE TABLE 建立一个联合索引(注意复合索引的索引列顺序) SQL> create index emp_id1 on emp(empno,ename,deptno); Index created 建立一个单键索引 SQL> create index emp_id2 on emp(sal); Index created SQL> select table_name,index_name from user_indexes 2 where table_name='EMP'; TABLE_NAME INDEX_NAME ------------------------------ ------------------------------ EMP EMP_ID1 EMP EMP_ID2 SQL> SELECT * FROM USER_IND_COLUMNS 2 / INDEX_NAME TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESCEND ------------------------------ ------------------------------ -------------------------------------------------------------------------------- --------------- ------------- ----------- ------- EMP_ID1 EMP EMPNO 1 22 0 ASC EMP_ID1 EMP ENAME 2 10 10 ASC EMP_ID1 EMP DEPTNO 3 22 0 ASC EMP_ID2 EMP SAL 1 22 0 ASC 下面的查询由于没有使用到复合索引的前导列,所以没有使用索引 select job, empno from emp where ename='RICH'; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- -------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | -------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | |* 1 | TABLE ACCESS FULL | EMP | | | | -------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("EMP"."ENAME"='RICH') Note: rule based optimization 14 rows selected 下面的查询也由于没有使用到复合索引的前导列,所以没有使用索引 select job, empno from emp where deptno=30; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- -------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | -------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | |* 1 | TABLE ACCESS FULL | EMP | | | | -------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("EMP"."DEPTNO"=30) Note: rule based optimization 14 rows selected 下面的查询使用了复合索引中的前导列,所以查询走索引了 select job, empno from emp where empno=7777; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | | 1 | TABLE ACCESS BY INDEX ROWID| EMP | | | | |* 2 | INDEX RANGE SCAN | EMP_ID1 | | | | --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("EMP"."EMPNO"=7777) Note: rule based optimization 15 rows selected 下面的查询使用了复合索引中的第一列和第二列,所以查询走索引了 select job, empno from emp where empno=7777 and ename='RICH'; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | | 1 | TABLE ACCESS BY INDEX ROWID| EMP | | | | |* 2 | INDEX RANGE SCAN | EMP_ID1 | | | | --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("EMP"."EMPNO"=7777 AND "EMP"."ENAME"='RICH') Note: rule based optimization 15 rows selected 使用了复合索引的全部列,所以走索引了,另外由于选了了索引中没有包含的列(job), 所以进行索引全表扫描得到满足条件的rowid后,还要到表中检索相应的行 select job, empno from emp where empno=7777 and ename='RICH' and deptno=30; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | | 1 | TABLE ACCESS BY INDEX ROWID| EMP | | | | |* 2 | INDEX RANGE SCAN | EMP_ID1 | | | | --------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("EMP"."EMPNO"=7777 AND "EMP"."ENAME"='RICH' AND "EMP"."DEP TNO"=30) Note: rule based optimization 16 rows selected 使用了复合索引的全部列,所以走索引了,而且由于所有选择的列都包含在索引中,所以仅仅进行了索引范围扫描 select empno from emp where empno=7777 and ename='RICH' and deptno=30; PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- -------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | -------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | |* 1 | INDEX RANGE SCAN | EMP_ID1 | | | | -------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("EMP"."EMPNO"=7777 AND "EMP"."ENAME"='RICH' AND "EM P"."DEPTNO"=30) Note: rule based optimization 15 rows selected
发表评论
-
expdp通过dblink来导入
2011-12-14 15:01 1798create.sql: spo create.log rem ... -
Library cache内部机制详解
2011-12-14 14:55 920Library cache内部机制详解 http://www ... -
Oracle的10046事件
2011-12-14 14:53 2105Oracle的10046事件,可以跟踪应用程序所执行的SQL语 ... -
REDO LOG MEMBER STATUS 和 REDO LOG GROUP STATUS
2011-12-14 14:51 935V$LOG 中列出的是REDO LOG GROUP STA ... -
oracle的exp/imp使用方法学习(转)
2011-08-30 08:54 971exp/imp两个命令可以说是oracle中最常用的命令了 ... -
oracle几个awr报告
2011-08-09 14:25 903工作中,碰到的数据库慢的几个awr报告 -
Oracle Profile 使用详解
2011-06-21 14:41 978一、目的: Oracle系统中的profile可以用来对 ... -
ORA-27013
2011-04-13 14:25 1521很新的一个bug,看下你的 memory_target是不是& ... -
ACLE表连接方式分析及常见用法
2011-03-23 09:14 1118摘要: 针对在数据仓库 ... -
ORACLE 外部表应用
2011-03-09 14:58 1075SQL> create or replace direc ... -
How to convert a 32-bit database to 64-bit database on Linux
2011-02-18 14:09 1222How to convert a 32-bit databas ... -
expdp impdp 数据库导入导出命令详解
2011-02-16 09:10 1962一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最 ... -
Oracle手工解/锁表
2011-01-25 14:15 2515手工锁表:lock table tbl_t1 in row ... -
oracle动态性能视图
2011-01-22 10:47 866Oracle动态性能视图个人整理 -
RBO规则介绍
2011-01-17 16:45 1095•无条件使用索引•使用内置的优先级别决定访问路径•比较难以 ... -
关于排序、sort_area_size、临时表空间
2011-01-13 15:30 1127简单陈述一下:针对每 ... -
创建索引ORACLE 需要做的工作
2011-01-13 14:53 1327一. 先来看一下创建索引要做哪些操作:1. 把inde ... -
表之间的连接
2011-01-13 10:42 804Join是一种试图将两个表结合在一起的谓词,一次只能连接2 ... -
重建索引的条件
2011-01-12 16:43 962如果索引存在碎片,那每个索引数据块上的索引数据就更少,会导致我 ... -
TKPROF使用学习
2011-01-10 17:38 734Tkprof工具可用来格式化sql trace产生的文件, ...
相关推荐
- 组合索引应确保覆盖常用查询的所有列,前导列应为使用频率最高的列。 4. **避免使用NULL**:NULL值不能被索引,因此在WHERE子句中使用`IS NULL`或`IS NOT NULL`会导致索引失效。 5. **IN与EXISTS**:使用`EXISTS`...
- **使用技巧**:在复合索引中,确保查询条件能覆盖索引的第一个字段,并尽量使字段顺序与索引顺序保持一致。 **9. 合理创建索引** - **原则说明**:并非所有的索引都能有效地提高查询效率,过度依赖索引反而会影响...
索引误区包括认为索引越多越好,以及误以为索引检索总比全表扫描快。优化原则包括:将索引和数据放在不同的文件组,确保索引有引导项,使用唯一索引,关联查询时的内部表关键列应有索引,以及考虑列的选择性。选择...
在Excel 2021中,当需要确保某个单元格地址在复制公式时不发生变化时,可以使用绝对单元格地址。例如,题目中的D列第4行交叉位置处的单元格的绝对地址是$D$4,其中的美元符号表示行列坐标都是固定的。 #### 3. 图表...