oracle中的索引问题。 这个表中有1亿3千万条数据。检索的数据件数没有超过30%,用索引的速度,比全表检索的速度慢很多。全表检索只用0.56s,而用索引检索根本就没检索出来。有朋友能解释下为什么吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我很确定他走了索引,但是,就是慢。。SELECT STATEMENT, GOAL = ALL_ROWS Cost=2627 Cardinality=1 Bytes=103 SORT GROUP BY Cost=2627 Cardinality=1 Bytes=103 NESTED LOOPS Cost=2626 Cardinality=1 Bytes=103 NESTED LOOPS Cost=2625 Cardinality=1 Bytes=90 MERGE JOIN Cost=2623 Cardinality=1 Bytes=75 SORT JOIN Cost=2619 Cardinality=3 Bytes=174 TABLE ACCESS BY GLOBAL INDEX ROWID Object owner=SB1 Object name=TP_H_SENBETSU_SHIWAKE Cost=2618 Cardinality=3 Bytes=174 INDEX SKIP SCAN Object owner=SB1 Object name=IDX1_TP_H_SENBETSU_SHIWAKE Cost=2613 Cardinality=3 FILTER SORT JOIN Cost=4 Cardinality=141 Bytes=2397 TABLE ACCESS FULL Object owner=SB1 Object name=MP_TOKEI_KENSYU_SYOSAI1 Cost=3 Cardinality=141 Bytes=2397 TABLE ACCESS BY INDEX ROWID Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1 Cost=2 Cardinality=1 Bytes=15 INDEX RANGE SCAN Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1_PK Cost=1 Cardinality=1 VIEW PUSHED PREDICATE Object owner=SB1 Cost=1 Cardinality=1 Bytes=13 FILTER SORT AGGREGATE Cardinality=1 Bytes=9 INDEX RANGE SCAN Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1_PK Cost=1 Cardinality=1 Bytes=9应该是他,可能太乱了呵呵。 INDEX SKIP SCAN 你的数据分布不适合跳扫,新建索引或者调整IDX1_TP_H_SENBETSU_SHIWAKE中字段的顺序 你建立了索引,用不用索引由Oracle决定。 1亿3千万条数据....检索的数据件数没有超过30%,用索引的速度,比全表检索的速度慢很多=================================================================肯定的,这么大的数据量,估计超过1%,就不会使用索引了。走索引的话,先查索引,再根据 rowid 检索主表,单条记录要查多个数据块。所以索引对 selectivity 高的查询更有效。 请教些不常用的语句,谢谢大家。 触发器的问题 新手求救,Oracle数据文件损坏,如何恢复数据。 oracle自定义函数返回值问题 关于UPDATE的问题 80分邀请高手进门帮忙 请问各位大虾,我现有一个oracle7.3生成的DMP文件,可以导入到oracle8.16中或是用oracle8.16的IMP工具吗?(在线求助) 在线等高手解答 关于存储过程 问一个有点深度,不知可否解决的问题? SQL语句执行时间统计 ORACLE SQL关于IN的用法的一个疑问 求助:PLSQL使用动态变量的问题
SELECT STATEMENT, GOAL = ALL_ROWS Cost=2627 Cardinality=1 Bytes=103
SORT GROUP BY Cost=2627 Cardinality=1 Bytes=103
NESTED LOOPS Cost=2626 Cardinality=1 Bytes=103
NESTED LOOPS Cost=2625 Cardinality=1 Bytes=90
MERGE JOIN Cost=2623 Cardinality=1 Bytes=75
SORT JOIN Cost=2619 Cardinality=3 Bytes=174
TABLE ACCESS BY GLOBAL INDEX ROWID Object owner=SB1 Object name=TP_H_SENBETSU_SHIWAKE Cost=2618 Cardinality=3 Bytes=174
INDEX SKIP SCAN Object owner=SB1 Object name=IDX1_TP_H_SENBETSU_SHIWAKE Cost=2613 Cardinality=3
FILTER
SORT JOIN Cost=4 Cardinality=141 Bytes=2397
TABLE ACCESS FULL Object owner=SB1 Object name=MP_TOKEI_KENSYU_SYOSAI1 Cost=3 Cardinality=141 Bytes=2397
TABLE ACCESS BY INDEX ROWID Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1 Cost=2 Cardinality=1 Bytes=15
INDEX RANGE SCAN Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1_PK Cost=1 Cardinality=1
VIEW PUSHED PREDICATE Object owner=SB1 Cost=1 Cardinality=1 Bytes=13
FILTER
SORT AGGREGATE Cardinality=1 Bytes=9
INDEX RANGE SCAN Object owner=SB1 Object name=MP_TOKEI_KENSYU_GRP_KIHON1_PK Cost=1 Cardinality=1 Bytes=9
应该是他,可能太乱了呵呵。
你的数据分布不适合跳扫,新建索引或者调整IDX1_TP_H_SENBETSU_SHIWAKE中字段的顺序
=================================================================
肯定的,这么大的数据量,估计超过1%,就不会使用索引了。走索引的话,先查索引,再根据 rowid 检索主表,单条记录要查多个数据块。所以索引对 selectivity 高的查询更有效。