2010-05-22 59 views
6

我有一個簡單的用戶表,我猜我的最大用戶數是300,000。Mysql介質int與int性能

目前我使用:

CREATE TABLE users 
(
     id INT UNSIGNED AUTOINCREMENT PRIMARY KEY, 
     .... 

當然,我有很多其他表爲哪些用戶(ID)是一個外鍵。

我讀到,由於id不會使用INT的最大值,所以最好使用: MEDIUMINT,它會提供更好的性能。

這是真的嗎?

(我使用Windows Server 2008上的MySQL)

+1

請參閱http://stackoverflow.com/questions/1157371/meaning-of-3-byte-numeric-in-mysql-mediumint – 2010-05-22 11:36:16

回答

10

我會考慮有時使用MEDIUMINT ..在300K行.. MEDIUMINT給你足夠的空間高達16M行(無符號)。

當你使用索引時,它不僅是關於「小表大小」,差異可能是巨大的 在27M行表上。從INT更改爲MEDIUMINT的2列爲我節省了1GB(索引+表數據)它從2.5GB變爲1.5GB。

3

不應該有一個性能上的差異,你得到的唯一好處是略小表的大小。無論如何,只有300'000行,你不應該關心。

5

這就是所謂的微型優化,而不是一個問題。
嘗試僅根據實際經驗而不是想象來問(首先你自己)表現問題。並且分析總是有助於區分彼此。

至於「最大300k」 - 在現實生活中,數字往往意外增長。爲什麼要爲自己挖一個陷阱?