to biti_rainy:
1)、索引是其他人建的,是唯一索引,我只知道这些,另外这个表还有其他的索引.
2)、我说过只是针对select count(*) from table;这条查询表的记录数的语句,没有where条件子句。
3)、是否做了分析我不清楚,再查一下资料先 。
4)、全部数据! 至于是有序的还是无序的,我想应该是无序的。因为检索出的数据没什么规律性。
5)、不清楚是基于代价还是基于规则。在这里要问一下,怎么查使用了那种优化器。
6)、“如果rule下可以使用索引,那就是优化器 认为使用索引会更慢 ”?不明白,知道慢还用?
如果说是认为快才使用,为什么对其他的表不使用索引,情况基本都一样的。
7)、老实说,对优化器不是很明白,我查查资料。
to hahadelphi:
不错,是唯一索引,我开始也考虑到这方面,但是同样对其他表进行相同的操作,为何不用索引,其他的表
也有唯一索引,而且情况基本类似,表一行的记录也比索引大得多。
这是使用了索引的查询。
SQL> select count(*) from table_name;
COUNT(*)
---------
134279
实际:270
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=1)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'table_name_P' (UNIQUE) (Cost=4 C
ard=1566981)
Statistics
----------------------------------------------------------
0 recursive calls
4 db block gets
2238 consistent gets
0 physical reads
0 redo size
1083 bytes sent via SQL*Net to client
664 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
1 rows processed
这是没有使用索引的查询。
SQL> select count(*) from table_name2;
COUNT(*)
---------
2275988
实际:23064
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'table_name2'
Statistics
----------------------------------------------------------
743 recursive calls
5 db block gets
313248 consistent gets
313021 physical reads
0 redo size
1087 bytes sent via SQL*Net to client
667 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
5 sorts (memory)
0 sorts (disk)
1 rows processed
我让对table_name2的查询使用索引
SQL> select /*+index(table_name2 table_name2_p)*/ count(*) from table_name2
COUNT(*)
---------
2275988
实际:9523
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1)
1 0 SORT (AGGREGATE)
2 1 INDEX (FULL SCAN) OF 'table_name2_P' (UNIQUE) (Cost=2
6 Card=6335323)
Statistics
----------------------------------------------------------
22 recursive calls
0 db block gets
60854 consistent gets
60750 physical reads
0 redo size
1089 bytes sent via SQL*Net to client
707 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
1 rows processed
提供一些信息,我再查查资料,分析分析,也希望坛子上的兄弟群策群力,哈哈。
另外,biti_rainy,我又提的几个问题还请解答,谢谢了。