TL; DR:Chuỗi có lẽ là an toàn hơn và sự khác biệt về hiệu suất sẽ không đáng kể. Các số nguyên có ý nghĩa đối với các tập hợp lớn nơi enum phải được lập chỉ mục. YMMV.
Đúng.
Đây là một lợi ích chính của số nguyên theo quan điểm của tôi. Tuy nhiên, nó cũng yêu cầu bạn đảm bảo các giá trị liên quan của enum
không thay đổi. Nếu bạn làm sai điều đó, bạn sẽ gần như chắc chắn sẽ bị tàn phá , đó là một bất lợi lớn.
Nếu bạn thực sự đang sử dụng kiểu dữ liệu enum, có thể đó là một số loại số nguyên bên trong, do đó, số nguyên sẽ yêu cầu xử lý ít hơn. Dù bằng cách nào, chi phí đó sẽ không đáng kể.
Tôi đang nhắc lại rất nhiều điều đã nói, nhưng có lẽ điều đó sẽ giúp ích cho những độc giả khác. Tổng kết:
- Việc trộn lẫn bản đồ giá trị enum sẽ tàn phá. Hãy tưởng tượng
Declined
của bạn trạng thái đột nhiên được hiểu làAccepted
, bởi vìDeclined
có giá trị '2' và bây giờ nóAccepted
bởi vì bạn đã sắp xếp lại thứ tự enum và quên gán giá trị theo cách thủ công ... ( rùng mình ) - Các chuỗi biểu cảm hơn
- Số nguyên chiếm ít dung lượng hơn. Dung lượng ổ đĩa thường không quan trọng, nhưng dung lượng chỉ mục sẽ ăn RAM, tốn kém.
- Cập nhật số nguyên không thay đổi kích thước đối tượng. Các chuỗi, nếu độ dài của chúng khác nhau rất nhiều, có thể yêu cầu phân bổ lại. Tuy nhiên, phần đệm chuỗi và phần đệm sẽ giảm bớt điều này.
- Rất tiếc, số nguyên có thể là cờ (chưa thể truy vấn (chưa), hãy xem SERVER-3518 )
- Các số nguyên có thể được truy vấn bằng
$gt
/$lt
để bạn có thể triển khai$or
phức tạp một cách hiệu quả truy vấn, mặc dù đó là một yêu cầu khá phức tạp và không có gì sai với$or
truy vấn ...