[英]Mysql medium int vs. int performance
我有一個簡單的用戶表,我想我將擁有的最大用戶是300,000。
目前我正在使用:
CREATE TABLE users
(
id INT UNSIGNED AUTOINCREMENT PRIMARY KEY,
....
當然我有很多其他用戶(id)是FOREIGN KEY的表。
我讀到,因為id不會使用INT的最大值,所以最好使用:MEDIUMINT,它會提供更好的性能。
這是真的嗎?
(我在Windows Server 2008上使用mysql)
我會考慮在300K行上使用MEDIUMINT .. MEDIUMINT給你足夠的空間,最多16M行(無符號)。
當你使用索引時,它不僅僅是“較小的表大小”..在27M行表上差異可能很大..從INT到MEDIUMINT的2列更改為我節省了1GB(索引+表數據)所以它從2.5GB開始到1.5 GB。
這被稱為微優化而不是問題。
盡量只根據真實的經驗而不是想象力來問(首先是你自己)表現問題。 分析總是有助於區分彼此。
至於“300k max” - 在現實生活中,數字往往會出乎意料地增長。 為什么要為自己挖一個陷阱?
不應該有性能差異,唯一的優勢是表格尺寸略小。 無論如何,對於300'000行,您不必關心。
如果您關心速度微優化,那么使用int
。
磁盤讀訪問將讀取一個字節塊,因此讀取4個字節將與讀取3個字節相同。
但由於3個字節的整數對於CPU來說不是原生的, mediumint
需要先轉換mediumint
才能使用(memcpy為4/8字節整數),從而導致開銷,而4字節整數對於CPU來說是原生的,可以直接使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.