Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khi nào thì tốt hơn nên lưu trữ cờ dưới dạng bitmask thay vì sử dụng bảng kết hợp?

Câu hỏi lộng lẫy!

Trước tiên, hãy đưa ra một số giả định về "tốt hơn".

Tôi cho rằng bạn không quan tâm nhiều đến dung lượng ổ đĩa - bitmask có hiệu quả theo quan điểm không gian, nhưng tôi không chắc điều đó quan trọng lắm nếu bạn đang sử dụng máy chủ SQL.

Tôi cho rằng bạn quan tâm đến tốc độ. Mặt nạ bit có thể rất nhanh khi sử dụng các phép tính - nhưng bạn sẽ không thể sử dụng chỉ mục khi truy vấn mặt nạ bit. Điều này không quan trọng lắm, nhưng nếu bạn muốn biết người dùng nào có quyền truy cập, truy vấn của bạn sẽ giống như

select * from user where permsission & CREATE = TRUE

(chưa có quyền truy cập vào SQL Server hôm nay, trên đường). Truy vấn đó sẽ không thể sử dụng chỉ mục do phép toán - vì vậy nếu bạn có một số lượng lớn người dùng, điều này sẽ khá khó khăn.

Tôi cho rằng bạn quan tâm đến khả năng bảo trì. Từ quan điểm về khả năng bảo trì, bitmask không biểu hiện như miền vấn đề cơ bản khi lưu trữ các quyền rõ ràng. Bạn gần như chắc chắn phải đồng bộ hóa giá trị của các cờ bitmask trên nhiều thành phần - bao gồm cả cơ sở dữ liệu. Không phải là không thể, nhưng đau ở mặt sau.

Vì vậy, trừ khi có một cách khác để đánh giá "tốt hơn", tôi muốn nói rằng tuyến bitmask không tốt bằng việc lưu trữ các quyền trong cấu trúc cơ sở dữ liệu chuẩn hóa. Tôi không đồng ý rằng nó sẽ "chậm hơn vì bạn phải tham gia" - trừ khi bạn có một cơ sở dữ liệu hoàn toàn không hoạt động, bạn sẽ không thể đo lường điều này (trong khi truy vấn mà không có lợi ích của chỉ mục hoạt động có thể trở nên đáng chú ý chậm hơn với thậm chí vài nghìn bản ghi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm định dạng ngày được sử dụng cho một ngôn ngữ cụ thể trong SQL Server (T-SQL)

  2. Ví dụ về POWER () trong SQL Server

  3. So sánh kỹ thuật:Microsoft Access 2016 và SQL Server 2016

  4. 4 lý do tại sao bạn nên ưu tiên giám sát cơ sở dữ liệu trong kế hoạch năm 2020 của mình

  5. Tách các từ bằng một chữ cái in hoa trong sql