2012-07-04 56 views
0

我有四場在我的用戶表在mysql表中很少使用字段會降低性能?

reset_password_code CHAR(128) 
reset_password_expiry DATETIME 

email_verification_code CHAR(128) 
email_verification_expiry DATETIME 

它會降低數據庫的性能?有沒有最佳做法來做到這一點? 我不擔心空間,但時間。

UPDATE:

如果我改變CHAR爲VARCHAR,將它解決了空間問題?

+0

通常情況下,點擔心的空間...我認爲這可能會增加*一點點插入或刪除時,*處理時間,因爲記錄會還有4個字段 –

+0

爲什麼不進行基準測試? [*'mysqlslap' *](http://dev.mysql.com/doc/en/mysqlslap.html) – eggyal

回答

1

理論上,更多的領域意味着更多的空間和更多的訪問時間。但是,如果你正在談論數據庫設計,這不會是一個問題。

實際上,您必須關注記錄的數量而不是字段的數量。這是因爲,隨着記錄數量的增加,搜索時間也會增加。

這就是爲什麼我們將合適的字段設置爲主鍵。如果您的搜索將在不同的字段中,您可能會發現您不能擁有多個主鍵。這是你使用索引的時候。也就是說,您應該根據您將用於搜索的字段創建索引。這是如何獲得效率。

過去我已經建立了MySQL + PHP有超過2000萬條記錄的應用程序。並且使用搜索功能獲取約10,000條記錄只需要不到10秒。

祕密不在字段的數量,但在你創建你的索引/主鍵的方式。

所以不要擔心4場,你有:)

+0

增加了一個問題,你能回答嗎? –

+1

@habeebperwad CHAR和VARCHAR的區別在於Char的長度是固定的。另一方面,Varchar僅根據實際數據的需要佔用空間,但限於指定的最大大小(例如:128)。現在,如果要使用128字符的加密代碼來寫入固定長度的數據,則任何一個字段都無關緊要。但是如果你想存儲像名字和地址這樣的值,VARCHAR就是要走的路。 – itsols