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

Có cách nào để lập chỉ mục một cách hữu ích cột văn bản có chứa các mẫu regex không?

Không có cách nào .

Chỉ mục yêu cầu IMMUTABLE biểu thức. Kết quả của biểu thức của bạn phụ thuộc vào chuỗi đầu vào. Tôi không thấy cách nào khác ngoài việc đánh giá biểu thức cho mọi hàng, nghĩa là quét tuần tự.

Câu trả lời liên quan với nhiều chi tiết hơn cho IMMUTABLE góc:

Chỉ là không có giải pháp thay thế cho trường hợp của bạn, điều này là không thể Chỉ mục. Chỉ mục cần lưu trữ các giá trị không đổi trong các bộ giá trị của nó, chỉ số này không có sẵn vì giá trị kết quả cho mọi hàng được tính dựa trên đầu vào. Và bạn không thể chuyển đổi đầu vào mà không nhìn vào giá trị cột.

Việc sử dụng chỉ mục Postgres bị ràng buộc với các toán tử và chỉ lập chỉ mục trên các biểu thức left của toán tử có thể được sử dụng (do các hạn chế lôgic giống nhau). Thêm:

Nhiều toán tử xác định COMMUTATOR cho phép người lập kế hoạch / tối ưu hóa truy vấn lật các biểu thức đã lập chỉ mục sang bên trái. Ví dụ đơn giản:Dấu phẩy của == . dấu phẩy của >< và ngược lại. Tài liệu:

Toán tử đối sánh biểu thức chính quy ~ không có cổ góp, một lần nữa, bởi vì điều đó là không thể. Hãy tự mình xem:

SELECT oprname, oprright::regtype, oprleft::regtype, oprcom
FROM   pg_operator
WHERE  oprname = '~'
AND    'text'::regtype IN (oprright, oprleft);

 oprname | oprright |  oprleft  | oprcom
---------+----------+-----------+------------
 ~       | text     | name      | 0
 ~       | text     | text      | 0
 ~       | text     | character | 0
 ~       | text     | citext    | 0

Và tham khảo hướng dẫn tại đây:

Tôi đã thử trước đây và phải chấp nhận điều đó không thể đối với hiệu trưở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. Cách sao chép các lược đồ trong PostgreSQL

  2. Postgresql trong cơ sở dữ liệu bộ nhớ django

  3. nhân bản dữ liệu phân cấp

  4. Cách tính toán trung bình động trong PostgreSQL

  5. Cách thiết lập cơ sở dữ liệu PostgreSQL trong Django