我想提高一个简单的查询性能,典型的结构类似:Oracle索引查询不工作
SELECT title,datetime
FROM LICENSE_MOVIES
WHERE client='Alex'
正如你可以在不同的网站阅读,喜欢this,你应该作出这样的指标:
CREATE INDEX INDEX_LICENSE_MOVIES
ON LICENSE_MOVIES(client);
但是在查询中有任何性能,就像它在哪里“忽略”索引。 我尝试使用提示,如this webpage says。 而像这样的查询结果:
SELECT /*+ INDEX(LICENSE_MOVIES INDEX_LICENSE_MOVIES) */ title, datetime
FROM LICENSE_MOVIES
WHERE client='Alex'
是否有任何错误在此语法?为什么我不明白有什么改进?
您是否检查过执行计划以查看它是否正在使用索引?它*可能*是有效的忽略它。表格有多大,索引的选择性如何,您使用的是哪种版本的Oracle,并且您是否尝试收集统计信息以确保优化器具有所需的所有信息,以便认为索引是有用的(如果它实际存在)? –
你好Alex,它是oracle v11。它看起来像使用索引,一个索引范围扫描,但它获取相同的原始比TABLE ACCESS BY INDEX ROWID,但不知道它是否正确...表不大,200K字节 – Sergiohernandez
请参阅执行计划 - +规则提示,如果它会显示你的索引使用情况,那么没关系。现在,特别是如果创建新表并且有几行Oracle创建优化计划,例如它可以向您显示EP中的表全扫描。 – Seyran