Tôi đồng ý với ý kiến "không sử dụng giá trị ma thuật". Nhưng tôi muốn chỉ ra rằng có những lúc nó hợp pháp để giải quyết những giải pháp như vậy.
Có một mức giá để thanh toán cho các cột đặt giá trị rỗng: NULL không thể lập chỉ mục.Truy vấn như "nhận tất cả các bản ghi chưa được sửa đổi kể từ đầu năm 2010" bao gồm những bản chưa bao giờ được sửa đổi. Nếu chúng ta sử dụng một cột nullable, chúng ta buộc phải sử dụng [sửa đổi] < @cutoffDate OR [sửa] IS NULL, và điều này sẽ buộc công cụ cơ sở dữ liệu thực hiện quét bảng, vì các giá trị rỗng không được lập chỉ mục. Và điều này mới nhất có thể là một vấn đề.
Trong thực tế, người ta nên đi với NULL nếu điều này không giới thiệu một hình phạt thực tế thực tế, thực tế. Nhưng có thể khó biết, trừ khi bạn có một số ý tưởng về khối lượng dữ liệu thực tế hiện nay và sẽ có trong cái gọi là tương lai có thể nhìn thấy được. Bạn cũng cần phải biết nếu có một tỷ lệ lớn các bản ghi có giá trị đặc biệt - nếu vậy, không có điểm nào trong việc lập chỉ mục nó.
Tóm lại, bằng điếc/quy tắc ngón tay cái, bạn nên dùng NULL. Nhưng nếu có một số lượng lớn các bản ghi, dữ liệu thường được truy vấn và chỉ một tỷ lệ nhỏ các bản ghi có giá trị NULL/đặc biệt, có thể đạt được hiệu suất đáng kể để định vị các bản ghi dựa trên thông tin này. index!) và IMHO điều này đôi khi có thể biện minh cho việc sử dụng các giá trị "ma thuật".
Nguồn
2011-03-07 12:32:18
Tôi có xu hướng đồng ý. Là một sang một bên, bạn có một câu trả lời cho câu hỏi? – user72491
Tôi ghét khi người dùng cố gắng chuyển hướng người dùng thay vì trả lời và - cố gắng chuyển hướng. – TheTXI
"Có lẽ tôi nên để nó vô giá trị." - Tôi đã trả lời phần –