Để trả lời câu hỏi của bạn:có, nó sẽ kém hiệu quả hơn. Rõ ràng, loại càng lớn, bảng càng lớn thì truy vấn càng chậm (nhiều I / O hơn, chỉ mục lớn hơn, thời gian truy cập lâu hơn, dẫn đến ít khả năng phù hợp với các bộ nhớ đệm khác nhau, v.v.). Vì vậy, theo quy tắc chung:luôn sử dụng loại nhỏ nhất phù hợp với bạn cần.
Điều đó đang được nói, hiệu suất không quan trọng . Tại sao? Bởi vì khi bạn đến một điểm mà bạn tràn INT, thì BIGINT là giải pháp duy nhất và bạn sẽ phải sống chung với nó. Cũng tại thời điểm đó (xem xét bạn đang sử dụng PK tăng tự động, bạn sẽ có hơn 4 tỷ hàng), bạn sẽ gặp các vấn đề về hiệu suất lớn hơn và chi phí của một BIGINT so với INT sẽ là điều bạn ít quan tâm nhất.
Vì vậy, hãy xem xét các điểm sau:
- Sử dụng UNSIGNED nếu bạn không cần giá trị âm, điều đó sẽ tăng gấp đôi giới hạn.
- Giá trị tối đa của UNSIGNED INT là 4.294.967.295. Nếu bạn đang sử dụng PK tự động tăng dần và bạn chỉ có 300.000 mục nhập, bạn thực sự không cần phải lo lắng . Bạn thậm chí có thể sử dụng MEDIUMINT vào lúc này, trừ khi bạn đang lên kế hoạch cho sự phát triển thực sự nhanh chóng. (xem http://dev.mysql.com/doc /refman/5.1/en/integer-types.html )
- Số trong ngoặc đơn sau loại không ảnh hưởng đến giá trị tối đa của loại . INT (7) giống như INT (8) hoặc INT (32). Nó được sử dụng để chỉ ra chiều rộng hiển thị nếu bạn chỉ định ZEROFILL (xem http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html )