2010-05-22 41 views
6

Tôi có một bảng người dùng đơn giản, tôi đoán số người dùng tối đa tôi sẽ có là 300.000.Mysql int trung bình so với hiệu suất int

Hiện nay tôi đang sử dụng:

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

Tất nhiên tôi có nhiều bảng khác mà người sử dụng (id) là khóa ngoại.

Tôi đọc rằng vì id sẽ không sử dụng tối đa tối đa INT, tốt hơn nên sử dụng: MEDIUMINT và nó sẽ mang lại hiệu suất tốt hơn.

Có đúng không?

(Tôi đang sử dụng mysql trên Windows Server 2008)

+1

xem http://stackoverflow.com/questions/1157371/meaning-of-3-byte-numeric-in-mysql-mediumint –

Trả lời

10

Tôi sẽ xem xét sử dụng MEDIUMINT đôi khi .. trên 300K hàng .. MEDIUMINT cho u đủ chỗ tối đa 16M hàng (chưa ký).

Nó không chỉ là "kích thước bảng nhỏ hơn" khi u sử dụng chỉ mục .. sự khác biệt có thể là lớn trên một bảng hàng 27M .. thay đổi 2 cột từ INT sang MEDIUMINT lưu tôi 1GB (chỉ mục + dữ liệu bảng) nó đã tăng từ 2.5GB lên 1.5 GB.

3

Không nên có một sự khác biệt hiệu suất, lợi thế duy nhất mà bạn nhận được là một kích thước bảng hơi nhỏ. Dù sao, chỉ với 300'000 hàng bạn không cần phải quan tâm.

5

Điều đó được gọi là tối ưu hóa vi mô và không phải là vấn đề.
Cố gắng đặt câu hỏi về hiệu suất (bản thân bạn ở vị trí đầu tiên) chỉ dựa trên trải nghiệm thực tế chứ không phải trí tưởng tượng. Và lược tả luôn giúp đỡ để phân biệt cái này với cái khác.

Đối với "tối đa 300k" - trong các số thực tế có xu hướng phát triển bất ngờ. Tại sao để đào một cạm bẫy cho chính mình?

Các vấn đề liên quan