假設我在數據庫表上有兩個查詢。關於數據庫表中部分鍵和索引的問題
查詢1:
查詢是在查詢中使用的字段來定義依賴於F1,F2,和F3
QUERY2:取決於F1,F2,F3和F4
我記得在某處讀到SQL查詢引擎(本例中爲mySQL)從索引中最左邊的字段開始解析索引樹。
如果這是正確的,那麼我認爲,而不必像這樣在桌子上定義了兩個指標:
Index 1 (for Query1) : CREATE INDEX idx_1 {f1, f2, f3}
Index 2 (for Query2) : CREATE INDEX idx_2 {f1, f2, f3, f4}
我可以簡單地定義包含兩個查詢中使用的密鑰的工會一個指標 - 即
我只需要定義這個索引:
(for BOTH Query1) : CREATE INDEX the_idx {f1, f2, f3, f4}
我有兩個問題:
我的假設是否正確?即我可以簡單地定義一個索引(the_idx)而不是前兩個?
此索引行爲是否適用於PostgreSQL查詢引擎?
這個假設是關於B-TREE的,而不是其他類型的索引。維基百科有關於HASH,GIN,GIST,RED-BLACK等的信息。深入瞭解數據庫的手冊,它還包含有關索引實現的更多信息。 – 2010-06-26 16:56:59