2011-04-20 48 views
3

我有一個表的主鍵是一個整數,然後是一個用於按類型搜索的列,它是一個varchar。可以說content_id和content_type。數據庫設計:索引Varchar

SELECT * FROM TABLE_A WHERE content_type='abc' 

varchar content_type的長度爲255.我正在考慮爲更快的SELECT查詢編制索引。這會提高性能嗎?即使長度爲255,如果只使用了5個字符,而不是全部255個字符,那麼這對性能有什麼影響?

+0

它只會節省磁盤空間 – 2011-04-20 14:37:46

回答

2

下面是一些要點:

  • 該指數將提高讀取查詢的性能(即選擇)。但是,它往往會降低寫查詢(即INSERT和UPDATE)的性能。當你在表格中獲得越來越多的記錄時,情況尤其如此。

  • 只使用5/255個字符不會影響您的索引性能足以注意到。

希望幫助!

10

content_type索引應該讓你的查詢更快:

select * from table_a where content_type = 'whatever'; 
select * from table_a where content_type like 'whatever%'; 

但它不會讓你的查詢更快:

select * from table_a where content_type like '%whatever%'; 

,如果你只使用5沒關係在255個可用字符中。

0

想補充一點,它只會使查詢在足夠大的表上更快。

關於postgres varchar只爲實際值使用盡可能多的空間,最大長度僅限制postgres允許插入的內容。因此,具有255的上限不會浪費索引中的空間。