Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kinerja RegEx vs LIKE dalam kueri MySql

Mungkin saja bisa lebih cepat karena kondisi LIKE dapat dievaluasi lebih cepat daripada ekspresi reguler jadi jika sebagian besar baris gagal dalam tes, itu bisa lebih cepat. Namun akan lebih lambat jika sebagian besar baris berhasil karena dua tes harus dijalankan untuk baris yang berhasil, bukan hanya satu. Itu juga tergantung pada ekspresi mana yang dipilih pengoptimal untuk dijalankan terlebih dahulu.

Percepatan yang lebih besar dapat disaksikan jika Anda memiliki sesuatu seperti ini:

SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'

Sekarang indeks dapat digunakan untuk menemukan kemungkinan baris karena LIKE '179%' adalah sargable . Banyak baris tidak perlu diperiksa sama sekali.

Seperti biasa, cara terbaik untuk memastikannya adalah dengan mengukurnya sendiri pada data Anda yang sebenarnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Cara Memesan Menggunakan Hitungan Dari Tabel Lain

  2. Kolom 'id' dalam daftar bidang ambigu di YII

  3. Silakan instal adaptor mysql 'gem install activerecord-mysql-adapter'

  4. Laravel - Fasih menimpa stempel waktu khusus... MENGAPA?

  5. MySQL LIKE tidak berfungsi dengan â