對不起,如果標題混淆,我很難清楚地說出我的問題。Oracle SQL:通過使用非唯一索引返回的子集中的行是否也可以通過使用第二個非唯一索引來查詢?
這是我的場景: 我有一個名爲SUBSCRIBERS的表,它有兩個非唯一索引。索引的列是AREA_ID和SUBSCRIPTION_DATE。
現在,我想(高效地)查詢特定區域中訂閱了特定日期後的所有訂閱者。例如SQL:
SELECT *
FROM subscribers
WHERE area_id = 'areaID'
AND subscription_date > to_date(some_date)
所以我們說要執行這個查詢,Oracle首先抓住所有的行給定areaID表示,讓我們說,這仍然是一個非常大的行數。 Oracle能夠按訂閱日期對這一行的子集進行範圍掃描嗎?或者,非唯一subscription_date索引僅適用於FULL表,這意味着Oracle必須對子集進行線性掃描?
另外,我不確定技術上的短語是如何描述也適用於子集的集合的索引。如果有人知道正確的術語,這將是一個很酷的獎金。
你有蟾蜍嗎?如果是的話,看看執行計劃,它會引導你完成對這個查詢的操作。 –
不需要toad,只需使用解釋計劃:http://download.oracle.com/docs/cd/B10500_01/server.920/a96533/ex_plan.htm –
@kingjiv,認爲它可能可用我只是_know_它是在蟾蜍 –