2012-01-17 79 views
1

我正在設計一個在PostgreSQL上運行的數據庫佈局。在這個數據庫中,我需要處理很多地址,所以我自然希望使用地址表,然後讓我的其他數據指向主鍵。PostgreSQL大型表SELECT/INSERT性能?

我希望地址是唯一的,所以我打算使用一個簡單的主鍵,然後在所有數據列上使用唯一索引。

沿着這個東西線:

CREATE TABLE address(id serial NOT NULL, name VARCHAR(32), address1 VARCHAR(32), address2 VARCHAR(32), postal VARCHAR(12), city VARCHAR(64), CONSTRAINT pkey PRIMARY KEY (id), CONSTRAINT unq UNIQUE (name,address1,address2,postal,city)); 

我預計會有從一開始就在此表以及超過200萬個條目。

該表將被很多同時選擇和一些插入命中。但爲了數據完整性目的,表格永遠不會看到UPDATES或DELETES。

這種表可以期待什麼樣的表現?使用大型表而不是將數據複製到需要的地方會有性能損失嗎?

+1

它很容易測試。使用您最喜歡的腳本語言來生成200萬套隨機字符串,確保它們是唯一的(通過小心腳本或'sort -u')並將它們加載到數據庫中。對於測試,地址是否看起來像地址並不重要。 –

回答

1

它取決於這個查詢的數量,你的機器有多強,是否有一個好的索引,可以用於每個查詢......一般來說2百萬行PostgreSQL它不是一個大數字,當查詢結果受到索引的限制,特別是通過主鍵搜索會很有效。

但是,通過LIKE進行搜索,並在開始時使用通配符,這將是一個性能問題。

+1

從9.1開始,PostgreSQL能夠使用'LIKE'操作的索引,請參閱:http://www.depesz.com/index.php/2011/02/19/waiting-for-9-1-faster-likeilike/ –

+0

GIN指數聽起來很有趣...我想我只是需要運行一些測試並親眼看看。 – aneez