2012-06-16 29 views
1

我創建的網站有「事件」。活動有一個標題,日期和相關人員的用戶名。一個事件可以是任何事情,從追隨某人,創建一個新的職位,等等。我正在考慮將所有事件存儲在一張表中,但我可以很快看到它變得非常大。龐大的PostgreSQL表的可能的性能問題

我在做對吧?當我需要搜索與某個用戶有關的事件時,系統上的通行費有多糟糕?我可以以某種方式優化它嗎?

回答

1

您可以在WHERE子句中最經常使用的列上添加索引,例如,如果您經常選擇與某個用戶有關的所有事件,則應該在user_id列上創建一個索引。

http://www.postgresql.org/docs/9.1/static/sql-createindex.html

+1

這可能不是一個好主意。如果表經歷了很多寫操作(看起來像是這樣),那麼添加索引實際上可能會降低整個系統的速度! – Oleksi

0

只要在該表中的數據是normalized,你應該確定。如果您發現該表上的讀取查詢速度變慢,則可以向某些列添加索引,但是您應該記住這會減慢對該表的寫入速度。

如果發現性能太慢,你可以切換到使用一些NoSQL數據庫是更好的大型表進行了優化。

+0

您能否給我一個關於表格大小的想法,在閱讀/寫作時會開始顯示性能問題?我們是否在談論數百,數千,數十萬條條目以查看滯後? – n0pe

+1

很難說,如果沒有對你的具體數據庫和你做的查詢做任何測量,但我估計會有數十萬。 – Oleksi