Postgres: REGEXP_MATCHES() function Bahagian 2
Cari kata kunci dalam komen
Dalam rencana yang lepas kita menggunakan fungsi REGEXP_MATCHES() untuk mencari tanda pagar (hashtag) dalam komen .
Postgres: REGEXP_MATCHES() function Bahagian 1
Kembali kepada contoh kedai makan kita yang lepas. Kita hari ini perlu buat 2 analisa data untuk kedai kita: Apakah hashtag yang digunakan oleh pelanggan ? Mengenal pasti komen yang mengandungi perkataan tertentu Seperti biasa mari mulakan dengan create table:
Bahagian 2 rencana ini mari kita cuba untuk melihat satu lagi analysis yang perlu dilakukan: Mengenal pasti perkataan tertentu dalam ruang komen.
Katakanlah kita cuba mendapatkan komen-komen yang mempunya perkataan seperti nasi atau air. Mungkin ini cara yang biasa kita lakukkan:
select 'air' as katakunci, comments from customer_comments where comments like '%ayam%'
UNION ALL
select 'nasi' as katakunci, comments from customer_comments where comments like '%nasi%';Anda akan mendapatkan hasil query seperti ini
Mari kita lihat execution plan, untuk query ini:
Full Scan berlaku 2 kali untuk table kerana condition yang digunakan adalah LIKE dan UNION ALL untuk mengabungkan dua dataset yang berlainan
Dengan menggunakan fungsi REGEXP_MATCHES(), kita akan dapatkan hasil yang sama tetapi dengan kos yang lebih rendah.
SELECT
REGEXP_MATCHES((comments), 'ayam|nasi','g') katakunci,
comments
FROM
customer_comments;Ini adalah hasilnya:
Explain plan menunjukkan kos yang lebih rendah kerana FULL SCAN hanya berlaku sekali.
Sebelum terlupa mari kita periksa regex yang digunakan dengan regex101
Selamat mencuba






