2010-11-07 44 views
26

Tôi biết một số cửa hàng phần mềm đã được ghi bằng cách sử dụng loại int cho khóa chính của một lớp liên tục. Điều đó đang được nói, không phải tất cả các bảng đều tăng hơn 2 tỷ. Như một vấn đề của thực tế, hầu hết không.Loại khóa chính: int vs long

Vì vậy, các bạn có sử dụng loại dài chỉ cho các lớp được ánh xạ tới các bảng có khả năng lớn HOẶC cho mỗi lớp liên tục chỉ để nhất quán không? Sự đồng thuận của ngành là gì?

Tôi sẽ để câu hỏi này mở một lúc để bạn có thể chia sẻ với chúng tôi những câu chuyện thành công/kinh dị của bạn.

Trả lời

19

Dài có thể thuận lợi ngay cả khi bảng không phát triển siêu lớn, nhưng có doanh thu cao tức là nếu hàng bị xóa/chèn thường xuyên. Số nhận dạng duy nhất được tạo tự động/tuần tự của bạn có thể tăng lên số cao trong khi bảng vẫn nhỏ.

Tôi thường sử dụng Long vì lợi ích hiệu suất không đáng chú ý trong hầu hết các dự án của tôi, tuy nhiên lỗi do tràn sẽ rất đáng chú ý!

Đó không phải là để nói rằng Int không phải là một lựa chọn tốt hơn cho các tình huống của người khác, ví dụ cho dữ liệu crunching hoặc hệ thống truy vấn phức tạp. Chỉ cần rõ ràng về các rủi ro/lợi ích và cách chúng tác động đến dự án cụ thể của bạn.

1

Tôi sử dụng Số nguyên cho các khóa thay thế của mình trừ khi tôi có nhu cầu cho chúng là thứ gì đó khác. Không nhất thiết phải sử dụng Long nếu bạn không có nhu cầu.

(Tôi thường sử dụng JPA/Hibernate trong các dự án của tôi chạy chống lại hoặc Oracle 10g hoặc cơ sở dữ liệu MySQL 5.x.)

1

Bởi vì Int sẽ luôn luôn được nhanh hơn cho Chọn/Sắp xếp.

+9

Ngay cả trong x64? Tôi nghĩ khác. –

2

Tôi không biết về "bị cháy". Nó không khó để thay đổi từ int đến lâu khi bạn cần. Chuyển đổi là thẳng về phía trước trong SQL, và sau đó nó chỉ là một tìm kiếm và thay thế trong mã khách hàng của bạn (hoặc thực hiện thay đổi trong lớp kiên trì của bạn, và sau đó biên dịch và xem những gì phá vỡ.) Bạn đang di chuyển từ một số nguyên khác, do đó bạn không phải lo lắng về các vấn đề chuyển đổi tinh tế hoặc cắt xén ..

Đi từ phao lên gấp đôi sẽ khó hơn rất nhiều.

+7

Ngày ai đó sử dụng phao hoặc tăng gấp đôi cho khóa chính là ngày tôi từ bỏ làm kỹ sư phần mềm. Nhưng bây giờ tôi muốn nói gì. Đối với các trường dấu chấm động, quyết định phía trước quan trọng hơn nhiều khi làm việc với các trường số nguyên. –