Trong hầu hết các DB, một NOT NULL
cột sẽ hiệu quả hơn về mặt dữ liệu được lưu trữ vì lý do bạn nêu và cũng hiệu quả hơn đối với truy vấn và lập chỉ mục - vì vậy trừ khi bạn muốn cho phép NULL trong một cột, bạn không nên cho phép chúng rõ ràng.
Sẽ có một hàm ý hiệu suất nhỏ, vì các NOT NULL
ràng buộc bổ sung sẽ có khả năng cần được kiểm tra cho mỗi hàng bạn ảnh hưởng với bất kỳ INSERT hoặc UPDATE nào, nhưng vì hầu hết các cơ sở dữ liệu đều nhẹ và tương đối nặng nên điều này có thể không phải là vấn đề đáng lo ngại dù sao thì thời gian thực hiện cũng khó có thể đáng chú ý vì đây là hoạt động gắn với CPU trong đó phần còn lại của hoạt động chèn / cập nhật sẽ bị ràng buộc IO và do đó, một cổ chai quan trọng hơn nhiều) và nó cung cấp cho bạn một số "miễn phí" "Kiểm tra dữ liệu để mã của bạn (hoặc mã của người khác) không thể vô tình đặt NULL trong đó mã khác không mong đợi chúng và do đó có thể cho kết quả không chính xác khi có mặt chúng.
Chỉnh sửa: Như Peter chỉ ra trong nhận xét của mình, ở trên là một khái quát và có thể không đúng với tất cả các DMBS, mặc dù tôi khá chắc chắn rằng nó làm được cho mysql và mssql. Các biến chứng khác trong khu vực có thể bao gồm các tính năng như các bảng thưa thớt (ví dụ như MSSQL 2008 đã triển khai) sẽ làm thay đổi động lực hiệu suất của các cột không (không).
NULL
nếu và chỉ khiNULL
giá trị có một giải thích cho điều bạn đang lập mô hình.