甲骨文数据库: 我有一个包含 400000 行的表。 我为 field1 创建了一个索引。 以下查询仍然很慢(700 毫秒):
select field1, field2
from table
where
field1 = '0903400110106156' or
field1 = '0903400110106160' or
field1 = '0903400110106190' or
field1 = '0903400110106471' or
field1 = '0903400110106480' or
field1 = '0903400110106494' or
field1 = '0903500110100001' or
field1 = '0903500110100012' or
field1 = '0903500110100021' or
field1 = '0903500110100031' or
field1 = '0903500110100039' or
field1 = '0903500110100047' or
field1 = '0903500110100050'
我删除了索引,但仍然有 700 毫秒。 我再次创建索引,但仍然需要 700 毫秒。 怎么了???
创建索引语句:
CREATE INDEX myindex
ON table (field1)
编辑:解释计划
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4 | 60 | 2 |
|* 1 | TABLE ACCESS FULL | table | 4 | 60 | 2 |
-----------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("table"."field1"='0901690339400674')
Note: cpu costing is off
EDIT2:好的,我对 2 个表进行了表分析。 table1 有速度问题。 table2 快很多(10 毫秒而不是 700 毫秒),尽管它的大小与 table1 相似。奇怪的速度问题!!!请帮助...
chk Owner Name Partition Subpartition Tablespace NumRows Blocks EmptyBlocks AvgSpace ChainCnt AvgRowLen AvgSpaceFLBlocks NumFLBlocks UserStats GlobalStats LastAnalyzed SampleSize Monitoring Status PartType PartInfo IsExternal
TRUE user table1 tablespace 484627 6858 182 878 777 103 NO NO 15/3/2011 18:34 125977 NO Normal, Successful Completion FALSE
TRUE user table2 tablespace 366159 6480 176 786 16565 130 NO NO 15/3/2011 18:34 89657 NO Normal, Successful Completion FALSE
最佳答案
与此同时,这个问题有点老了,但由于我现在遇到了同样的问题,而且没有答案对我有用,所以我认为这是正确的答案。创建索引后,使用以下语句告诉 Oracle 有一个新索引,它必须尽可能使用它。
ANALYZE TABLE <tablename> COMPUTE STATISTICS;
作为替代方案,您可以通过以下方式告诉 Oracle 在您创建新索引时立即计算统计信息:
CREATE INDEX myindex ON table (field1) COMPUTE STATISTICS;
关于database - Oracle - 索引似乎不起作用。还是慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5313387/