2011-09-04 30 views
5

Chúng ta cần lưu trữ nhiều hàng trong bảng MySQL (InnoDB), tất cả chúng đều có chuỗi nhị phân 8 byte làm khóa chính. Tôi đã tự hỏi rằng tốt nhất là sử dụng loại cột BIGINT (có chứa 64-bit, do đó 8 byte, số nguyên) hoặc BINARY (8), có độ dài cố định.MySQL: khóa chính là chuỗi 8 byte. Sử dụng BIGINT hoặc BINARY (8) có tốt hơn không?

Vì chúng tôi đang sử dụng các id đó làm chuỗi trong ứng dụng của chúng tôi chứ không phải số, lưu trữ chúng dưới dạng chuỗi nhị phân âm thanh mạch lạc hơn với tôi. Tuy nhiên, tôi tự hỏi nếu có vấn đề hiệu suất với điều này. Liệu nó có bất kỳ sự khác biệt?

Nếu điều đó quan trọng, chúng tôi đang đọc/lưu trữ các id này bằng ký pháp hex (như page_id = 0x1122334455667788). Tuy nhiên, chúng tôi sẽ không sử dụng số nguyên trong truy vấn vì chúng tôi đang viết một ứng dụng PHP và bạn chắc chắn không có loại "long long int", vì vậy tất cả các số nguyên là kích thước phụ thuộc vào máy.

Trả lời

2

Tôi muốn sử dụng nhị phân (8) nếu điều này phù hợp với thiết kế của bạn.

Nếu không, bạn sẽ luôn có chi phí chuyển đổi về hiệu suất hoặc độ phức tạp ở đâu đó. Sẽ không có nhiều sự khác biệt (nếu có) giữa các loại ở cấp RDBMS

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