📄 oracle常见问题常用技巧-2.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>索引( Index )是常见的数据库对象,它的设置好坏、使用是否得当,极大地影响数据库应用程序和Database 的性能。虽然有许多资料讲索引的用法,
DBA 和 Developer 们也经常与它打交道,但笔者发现,还是有不少的人对它存在误解,因此针对使用中的常见问题,讲三个问题。此文所有示例所用的数据库是
Oracle 8.1.7 OPS on HP N series ,示例全部是真实数据,读者不需要注意具体的数据大小,而应注意在使用不同的方法后,数据的比较。本文所讲基本都是陈词滥调,但是笔者试图通过实际的例子,来真正让您明白事情的关键。</p>
<p>索引并非总是最佳选择</p>
<p>如果发现Oracle 在有索引的情况下,没有使用索引,这并不是Oracle 的优化器出错。在有些情况下,Oracle 确实会选择全表扫描(Full Table
Scan),而非索引扫描(Index Scan)。这些情况通常有:</p>
<p>1. 表未做statistics, 或者 statistics 陈旧,导致 Oracle 判断失误。</p>
<p>2. 根据该表拥有的记录数和数据块数,实际上全表扫描要比索引扫描更快。</p>
<p>对第1种情况,最常见的例子,是以下这句sql 语句:</p>
<p>select count(*) from mytable; </p>
<p>在未作statistics 之前,它使用全表扫描,需要读取6000多个数据块(一个数据块是8k),做了statistics 之后,使用的是 INDEX
(FAST FULL SCAN) ,只需要读取450个数据块。但是,statistics 做得不好,也会导致Oracle 不使用索引。</p>
<p> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -