对表创建正确的索引可以加快查询速度。
一个小测试。
有一个表cpu_monitor有843240条记录,
SQL desc cpu_monitor;
NameNull?Type
----------------------------------------- -------- ----------------------------
SVRNAMEVARCHAR2(25)
RECDDATE DATE
USRNUMBER(10)
SYSNUMBER(10)
WIONUMBER(10)
IDLE NUMBER(10)
SQL select count(*) from cpu_monitor;
COUNT(*)
----------
843240
Elapsed: 00:00:06.47
对它以下面的SQL语句进行查询:select SVRNAME, count(*) counts from CPU_MONITORgroup by SVRNAME。
花去时间20.07秒
SQL select SVRNAME, count(*) counts from CPU_MONITORgroup by SVRNAME
2;
SVRNAME COUNTS
------------------------- ----------
app1 6713
dev19297
*******
*
*
*//省略
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_MONITORgroup by SVRNAME。
花去时间07.41秒。
SQL select SVRNAME, count(*) counts from CPU_MONITORgroup by SVRNAME
2;
SVRNAME COUNTS
------------------------- ----------
app1 6713
dev19297
*******
*
*
*//省略
24 rows selected.
Elapsed: 00:00:07.41
好了,目的达到了。节省了时间是:12秒多。