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

Bagaimana cara mencari baris yang berisi substring?

Nah, Anda selalu dapat mencoba WHERE textcolumn LIKE "%SUBSTRING%" - tetapi ini dijamin akan sangat lambat, karena kueri Anda tidak dapat melakukan pencocokan indeks karena Anda mencari karakter di sisi kiri.

Itu tergantung pada jenis bidang - textarea biasanya tidak akan disimpan sebagai VARCHAR, melainkan sebagai (semacam) bidang TEXT, sehingga Anda dapat menggunakan COCOK LAGI operator.

Untuk mendapatkan kolom yang tidak cocok, cukup beri tanda NOT di depan like:WHERE textcolumn NOT LIKE "%SUBSTRING%" .

Apakah pencarian peka huruf besar-kecil atau tidak tergantung pada bagaimana Anda menyimpan data, terutama COLLATION apa yang Anda gunakan. Secara default, penelusuran tidak peka huruf besar/kecil.

Jawaban yang diperbarui untuk mencerminkan pembaruan pertanyaan:

Saya mengatakan bahwa melakukan WHERE field LIKE "%value%" lebih lambat dari WHERE field LIKE "value%" jika bidang kolom memiliki indeks, tetapi ini masih jauh lebih cepat daripada mendapatkan semua nilai dan memiliki filter aplikasi Anda. Kedua skenario:

1/ Jika Anda melakukan SELECT field FROM table WHERE field LIKE "%value%" , MySQL akan memindai seluruh tabel, dan hanya mengirim bidang yang berisi "nilai".

2/ Jika Anda melakukan SELECT field FROM table dan kemudian minta aplikasi Anda (dalam kasus Anda PHP) memfilter hanya baris dengan "nilai" di dalamnya, MySQL juga akan memindai seluruh tabel, tetapi mengirim semua bidang ke PHP, yang kemudian harus melakukan pekerjaan tambahan. Ini jauh lebih lambat daripada kasus #1.

Solusi:Silakan gunakan WHERE klausa, dan gunakan EXPLAIN untuk melihat pertunjukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menginstal MySQLdb di Mountain Lion

  2. Menggunakan aplikasi klien MySQL

  3. Cara Membatasi Baris dalam Kumpulan Hasil MySQL

  4. Tidak dapat terhubung ke salah satu host MySQL yang ditentukan saat memeriksa koneksi

  5. Rel pada OSX 10.11 El Capitan:Perpustakaan tidak dimuat:libmysqlclient.18.dylib