2015-04-06 95 views
2

我有一個地理地圖數據庫,列x,y,z,縮放和類型。最初,讀取速度很慢,當我使用呼叫每次更新數據庫時,是否需要發出CREATE INDEX?

SELECT image WHERE x = ... AND y=... AND zoom=... AND type =... 

由於從堆棧溢出的熱心幫助,我發現(X,Y,Z,變焦)索引幫助提高讀取速度令人印象深刻。

但是,我有一個問題,這個CREATE INDEX命令只需要在數據庫第一次初始化時發出一次?而且即使數據庫逐漸長大,它仍然會享受索引帶來的讀取速度提升嗎?

或者我需要在每次關閉我的應用程序之前發出CREATE INDEX命令(在應用程序期間,數據庫將會增長)?

回答

3

您只需要創建一次索引。

數據庫將記住包含索引的列,並將不斷更改索引以及表。

如果向表中插入條目,它將被添加到索引。如果您更改了一個條目 - 它將在索引中被修改。最後,如果刪除一個條目 - 它將從索引中刪除。

請注意,索引會加速您的搜索操作 - SELECT上的索引列,但會降級INSERT,UPDATE,DELETE

+0

非常感謝你!你完全瞭解這一點。 – 2015-04-06 09:44:51

+0

但是,請注意,要利用特定查詢的索引,會收集並存儲有關表和索引的統計信息。如果表格中的數據以及索引發生了很大變化,則可能需要刷新這些統計信息。您可以使用命令「analyze 」來做到這一點。第二個注意事項:即使您有一個索引並且統計數據很好,查詢規劃人員也可能決定不使用該索引,因爲它找到了更高效的執行路徑。第三個節點:由於您正在處理空間數據,因此您可能需要查看空間拓展。 – klas2iop 2015-04-06 12:34:22

相關問題