oracle table.count,select count(*) from table.也会使用索引?

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,我又提的几个问题还请解答,谢谢了。

266faa3e2451dd0bb0047cc3ca69ae30.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值