对表创建正确的索引可以加快查询速度。
一个小测试。
有一个表cpu_monitor有843240条记录,
SQL> desc cpu_monitor;
Name Null? Type
----------------------------------------- -------- ----------------------------
SVRNAME VARCHAR2(25)
RECDDATE DATE
USR NUMBER(10)
SYS NUMBER(10)
WIO NUMBER(10)
IDLE NUMBER(10)
SQL> select count(*) from cpu_monitor;
COUNT(*)
----------
843240
Elapsed: 00:00:06.47
对它以下面的SQL语句进行查询:select SVRNAME, count(*) counts from CPU_MONITOR group by SVRNAME。
花去时间20.07秒
SQL> select SVRNAME, count(*) counts from CPU_MONITOR group by SVRNAME
2 ;
SVRNAME COUNTS
------------------------- ----------
app1 6713
dev 19297
*** ****
*
*
*//省略
24 rows selected.
Elapsed: 00:00:20.07
对这个表建立索引:create index idx_cpu_monitor on CPU_MONITOR(SVRNAME);
不过这个索引却花了01:42.07分钟才建好。
SQL> create index idx_cpu_monitor on CPU_MONITOR(SVRNAME);
Index created.
Elapsed: 00:01:42.07
对它以下面的SQL语句进行查询:select SVRNAME, count(*) counts from CPU_MONITOR group by SVRNAME。
花去时间07.41秒。
SQL> select SVRNAME, count(*) counts from CPU_MONITOR group by SVRNAME
2 ;
SVRNAME COUNTS
------------------------- ----------
app1 6713
dev 19297
*** ****
*
*
*//省略
24 rows selected.
Elapsed: 00:00:07.41
好了,目的达到了。节省了时间是:12秒多。