Tran_id Tran_name Tran_region Tran_Date Tran_Item
1 Tanya Europe 04-FEB-16 book
2 Tanya Europe 04-FEB-16 book1
3 Tanya Europe 04-FEB-16 book2
4 Tanya Europe 04-FEB-16 book3
对于此表,创建索引为索引(Tran_region,Tran_date)
让我们假设我的测试表中有一百万行
我需要根据Tran_name =' Tanya'来获取记录。 ,Tran_region =' Europe',Tran_date =' 04-Feb-16'
我的Oracle查询
SELECT *
FROM TEST_TABLE
WHERE Tran_name='Tanya' , Tran_region='Europe', Tran_date='04-Feb-16'
如何为我的查询运行索引,是基于索引列进行全表扫描还是扫描
当我为列Tran_region,Tran_date创建索引但在我的where子句中我指定了tran_name也没有编入索引。
感谢是否有人提供索引功能工作主体。我是Oracle技术的新手。
答案 0 :(得分:1)
如果您运行该查询,它只会抛出一个错误,因为它无效。
在您运行之前,您 它可能选择不使用索引是出于奇怪的原因。但它可能会使用您的索引,因为您正在搜索索引的前导列。如果另一个索引存在所有的那些列(覆盖索引),它可能会使用它。
如果存在另一个缺少其中一个作为前导列的索引,则可能会对该索引执行跳过扫描。
它是索引中列的顺序,而不是where
中重要的列顺序。