PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ada cara untuk mengindeks kolom teks yang berisi pola regex dengan berguna?

Tidak ada tidak mungkin .

Indeks memerlukan IMMUTABLE ekspresi. Hasil ekspresi Anda tergantung pada string input. Saya tidak melihat cara lain selain mengevaluasi ekspresi untuk setiap baris, yang berarti pemindaian berurutan.

Jawaban terkait dengan detail lebih lanjut untuk IMMUTABLE sudut:

Hanya saja tidak ada solusi untuk kasus Anda, yang tidak mungkin untuk mengindeks. Indeks perlu menyimpan nilai konstan dalam tupelnya, yang tidak tersedia karena nilai yang dihasilkan untuk setiap baris dihitung berdasarkan input. Dan Anda tidak dapat mengubah input tanpa melihat nilai kolom.

Penggunaan indeks Postgres terikat pada operator dan hanya indeks pada ekspresi kiri operator dapat digunakan (karena batasan logis yang sama). Selengkapnya:

Banyak operator mendefinisikan COMMUTATOR yang memungkinkan perencana/pengoptimal kueri untuk membalik ekspresi yang diindeks ke kiri. Contoh sederhana:Komutator dari = adalah = . komutator dari > adalah < dan sebaliknya. Dokumentasi:

Operator pencocokan ekspresi reguler ~ tidak memiliki komutator, sekali lagi, karena itu tidak mungkin. Lihat sendiri:

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

Dan lihat manualnya di sini:

Saya telah mencoba sebelumnya dan harus menerima bahwa itu tidak mungkin pada prinsipnya .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan kunci yang dibuat secara otomatis dari penyisipan baris di musim semi 3 / PostgreSQL 8.4.9

  2. SQL:Bagaimana cara menyimpan pesanan dalam kueri sql?

  3. Urutan Django dan PostgreSQL untuk peningkatan otomatis kunci utama

  4. Cara merender hubungan satu ke banyak ke XML dengan PostgreSQL

  5. Postgres:PILIH nama kolom berdasarkan nilai Boolean