📄 oracle常见问题常用技巧-5.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#000000" text="#FFFFFF">
<p><font color="#009900">Oracle 索引好坏的问题</font></p>
<p>索引有 B tree 索引, Bitmap 索引, Reverse b tree 索引, 等。最常用的是 B tree 索引。 B 的全称是Balanced
, 其意义是,从 tree 的 root 到任何一个leaf ,要经过同样多的 level. 索引可以只有一个字段(Single column), 也可以有多个字段(Composite),最多32个字段,8I
还支持 Function-based index. 许多developer 都倾向于使用单列B 树索引。</p>
<p>所谓索引的好坏是指:</p>
<p>1,索引不是越多越好。特别是大量从来或者几乎不用的索引,对系统只有损害。OLTP系统每表超过5个索引即会降低性能,而且在一个sql 中, Oracle
从不能使用超过 5个索引。</p>
<p>2,很多时候,单列索引不如复合索引有效率。</p>
<p>3,用于多表连结的字段,加上索引会很有作用。</p>
<p>那么,在什么情况下单列索引不如复合索引有效率呢?有一种情况是显而易见的,那就是,当sql 语句所查询的列,全部都出现在复合索引中时,此时由于 Oracle
只需要查询索引块即可获得所有数据,当然比使用多个单列索引要快得多。(此时,这种优化方式被称为 Index only access path)</p>
<p>除此之外呢?我们还是来看一个例子吧:</p>
<p>在 HP(Oracle 8.1.7) 上执行以下语句:</p>
<p>select count(1) from mytabs where coid>=130000 and issuedate >= to_date
('2001-07-20','yyyy-mm-dd')。</p>
<p>一开始,我们有两个单列索引:I_mytabs1(coid), I_mytabs2(issuedate), 下面是执行情况:</p>
<p> <br>
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -