我有表示表示具有開始和結束時間的事件的表(存儲爲DATE,TIMESTAMP或TIMESTAMP WITH TIME ZONE格式),例如,Oracle:日期間隔內的高效查詢
MY_TABLE:
DATA START END
A 1/11/2012 10:00 1/11/2012 12:00
B 2/12/2012 08:00 2/12/2012 16:00
而且它經常發生隨時間間隔對這樣的表格的查詢,例如,
SELECT data
FROM my_table
WHERE start BETWEEN t1 AND t2; -- usually we either use start or end time for every row.
其中t1和t2是DATE/TIMESTAMP值s.t. t1 < = t2。
由於這些查詢要在大型表上運行,是否有更好的,也就是更高效的方式來執行上述查詢?
目前我不知道任何具有上述結構的表在任何時間數據列上都有索引,但添加它們仍然不是問題。他們在其他非時間相關的專欄上有索引。
我記得已經閱讀過一些使用分析函數(比如分區)的方法,這些查詢可以比簡單地使用BETWEEN..AND更有效。不幸的是,我找不到鏈接了,我不知道分析功能,我已經在網上閱讀了幾個簡短的介紹。
因爲我沒有多少時間進行調查,所以我想問你是否可以證實我的理論,並且如果你能指引我一個與我的問題有關的例子。
毫無疑問,我不是在問你我的問題的快速回答,有的是複製&粘貼,只是一個提示,瞭解我是否正在尋找正確的方向。
TIA
編輯: @jonearles:對於第一個說法我同意,但我想知道,如果使用的分析功能不實際上能夠提供更高效的查詢。
對於後者,是的,我的意思是PARTITION BY子句。對我來說這是一個愚蠢的規範,因爲分析函數預計會與PARTITION BY子句一起使用。 我對這個問題表示歉意,正如我之前所說的那樣,我對這個問題沒有多大的瞭解。
你的索引是什麼? – Ben
答案已添加到問題中。 – user881430