我有一個數據庫使用VARCHAR(255)作爲其主鍵在表上,他們看起來像GUIDs。 Int不會更好的表現嗎?MySQL的主鍵和VARCHAR(255)
2
A
回答
2
這取決於你的存儲引擎,但一般來說int/bigint會更好。如果您使用的是innodb,則由於聚集索引的工作方式,uuid/guid是主鍵的不好選擇。請閱讀blog以瞭解更多信息。總結一下,鍵是按範圍存儲的,因爲uuids'是隨機的,所以它們會使插入和查找的效率降低,因爲您會通過讀取和寫入每行的整個內存塊來使緩存過載。
0
Ints佔用磁盤空間更少,因此在搜索時需要更少的I/O。只要範圍適合你的需要,我會說一個int將會更快。
相關問題
- 1. 外鍵引用的主鍵可以是mysql中的varchar(255)嗎?
- 2. mysql中的varchar和複合主鍵?
- 3. MySQL VarChar 255及以上
- 4. VARCHAR(254)vs VARCHAR(255)
- 5. Varchar(255)到Varchar(MAX)
- 6. varchar()主鍵或int主鍵?
- 7. cakephp mysql,autoincrement id或varchar作爲主鍵
- 8. 什麼是VARCHAR(255)
- 9. MySQL:爲什麼使用VARCHAR(20)而不是VARCHAR(255)?
- 10. MySQL:爲什麼varchar(254)而不是varchar(255)?
- 11. NodeJS具有複合主鍵和特定VARCHAR長度的MySQL ORM
- 12. 優化表設計mysql與主鍵和varchar值
- 13. varchar(255)v tinyblob v tinytext
- 14. php和mysql主鍵
- 15. 與VARCHAR作爲主鍵
- 16. 對於MySQL中的innodb表,它更快:varchar(255)或tinytext?
- 17. MySql/Cloudbees VARCHAR作爲外鍵
- 18. MySQL的觸發自動增量爲varchar(沒有主鍵)
- 19. MySQL中的主鍵:INT(n)或UUID as varchar(36)
- 20. CHAR()或VARCHAR()作爲ISAM mySQL表中的主鍵?
- 21. PHP MSSQL VARCHAR 255個字符的問題
- 22. MySQL中的VARCHAR(255)和TINYTEXT字符串類型有什麼區別?
- 23. 主鍵 - 用於UUID主鍵的VARBINARY或BLOB或VARCHAR
- 24. MySQL:如何將varchar(255)UNIQUE列更改爲UNIQUE文本NOT NULL?
- 25. 在遷移過程中MySQL VARCHAR索引被截斷爲255
- 26. 查找丟失的varchar主鍵
- 27. MySQL和2列主鍵
- 28. MySQL - 如何使用VARCHAR作爲AUTO INCREMENT主鍵
- 29. Redbean O/RM將「date」as varchar(255)?
- 30. SQL:將所有列轉換爲VarChar(255)
是的,由於PK通常在anotehr表中連接到FK(具有相同類型),因此尺寸很小很好。對於性能,int(大小爲4或8)通常優於255。 – 2012-01-11 22:29:23
此外,作爲InnoDB引擎中的PK,GUID並不是很好,因爲聚集索引隨着值的增加而變得更好,而不是隨機的(如GUID產生的)。 – 2012-01-11 22:31:39
看到這個[類似的問題和有趣的答案](http://stackoverflow.com/questions/332300/is-there-a-real-performance-difference-between-int-and-varchar-primary-keys) – 2012-01-11 22:36:47