我知道这个问题已经在这里被问过不止一次。但我无法解决我的问题,因此再次发布求助。DB索引不被调用
我有一个表,称为交易在Oracle数据库(11克)与270万条记录。有一个包含数值的非空varchar2(20)
(txn_id
)列。这不是表格的主键,并且大部分值都是唯一的。我的意思是大部分数值都可以在表格中出现3-4次。
如果我根据TXN_ID
执行select的简单查询,则需要大约5秒或更长时间来返回结果。
Select * from Transaction t where t.txn_id = 245643
我有这个列上创建的索引,但是当我检查上述查询的解释计划时,它使用全表扫描。此查询在应用程序中多次使用,导致应用程序变慢。
你能提供一些帮助,可能会导致此问题吗?
发布查询计划(包括访问和过滤器谓词)将会很有帮助。如果该列是'varchar2',那么为什么要将它与一个数字而不是一个字符串进行比较?如果你的谓词是't.txn_id ='245643''会发生什么呢?你的应用程序是否真的使用了文字(我确定不希望)?如果它使用绑定变量,它绑定的是数值还是字符串值? –
你可以发布索引定义吗? txn_id是索引中唯一的列吗? –