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

Hoạt động bitwise trong Postgres

Việc sử dụng có thể sử dụng các chỉ số từng phần để giải quyết vấn đề rằng "&" không phải là toán tử có thể lập chỉ mục (afaik):

CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;

Tất nhiên, bạn sẽ cần thêm một chỉ mục mới mỗi khi bạn thêm một loại mới. Đó là một trong những lý do để mở rộng dữ liệu thành một bảng liên kết mà sau đó có thể được lập chỉ mục đúng cách. Bạn luôn có thể viết các trình kích hoạt để duy trì thêm một bảng mặt nạ bit, nhưng hãy sử dụng bảng nhiều-nhiều để thực sự duy trì dữ liệu một cách bình thường, vì nó sẽ rõ ràng hơn nhiều.

Nếu toàn bộ đánh giá về quy mô và hiệu suất của bạn là "Tôi có thể có hàng triệu hàng", thì bạn chưa làm đủ để bắt đầu thực hiện loại tối ưu hóa này. Trước tiên, hãy tạo một mô hình rõ ràng có cấu trúc phù hợp, tối ưu hóa nó sau trên cơ sở thống kê thực tế về cách nó hoạt động.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lấy tổng hợp trong các khoảng thời gian tùy ý

  2. Cột thay đổi Rails Migration để sử dụng mảng Postgres

  3. Cách xóa dấu chấm trong to_char nếu số là số nguyên

  4. Có cách nào để thay đổi dấu thời gian mặc định của Rails thành Y-m-d H:i:s (thay vì Y-m-d H:i:s.u) hoặc yêu cầu laravel bỏ qua phần thập phân của Y-m-d H:i:s.u không?

  5. Dấu gạch dưới hoặc camelCase trong mã định danh PostgreSQL, khi ngôn ngữ lập trình sử dụng camelCase?