我有四場在我的用戶表在mysql表中很少使用字段會降低性能?
reset_password_code CHAR(128)
reset_password_expiry DATETIME
email_verification_code CHAR(128)
email_verification_expiry DATETIME
它會降低數據庫的性能?有沒有最佳做法來做到這一點? 我不擔心空間,但時間。
UPDATE:
如果我改變CHAR爲VARCHAR,將它解決了空間問題?
我有四場在我的用戶表在mysql表中很少使用字段會降低性能?
reset_password_code CHAR(128)
reset_password_expiry DATETIME
email_verification_code CHAR(128)
email_verification_expiry DATETIME
它會降低數據庫的性能?有沒有最佳做法來做到這一點? 我不擔心空間,但時間。
UPDATE:
如果我改變CHAR爲VARCHAR,將它解決了空間問題?
理論上,更多的領域意味着更多的空間和更多的訪問時間。但是,如果你正在談論數據庫設計,這不會是一個問題。
實際上,您必須關注記錄的數量而不是字段的數量。這是因爲,隨着記錄數量的增加,搜索時間也會增加。
這就是爲什麼我們將合適的字段設置爲主鍵。如果您的搜索將在不同的字段中,您可能會發現您不能擁有多個主鍵。這是你使用索引的時候。也就是說,您應該根據您將用於搜索的字段創建索引。這是如何獲得效率。
過去我已經建立了MySQL + PHP有超過2000萬條記錄的應用程序。並且使用搜索功能獲取約10,000條記錄只需要不到10秒。
祕密不在字段的數量,但在你創建你的索引/主鍵的方式。
所以不要擔心4場,你有:)
增加了一個問題,你能回答嗎? –
@habeebperwad CHAR和VARCHAR的區別在於Char的長度是固定的。另一方面,Varchar僅根據實際數據的需要佔用空間,但限於指定的最大大小(例如:128)。現在,如果要使用128字符的加密代碼來寫入固定長度的數據,則任何一個字段都無關緊要。但是如果你想存儲像名字和地址這樣的值,VARCHAR就是要走的路。 – itsols
通常情況下,點擔心的空間...我認爲這可能會增加*一點點插入或刪除時,*處理時間,因爲記錄會還有4個字段 –
爲什麼不進行基準測試? [*'mysqlslap' *](http://dev.mysql.com/doc/en/mysqlslap.html) – eggyal