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

Kueri SQL mana yang lebih baik, MATCH AGAINST atau LIKE?

Perbarui

Mulai MySQL 5.6 dan kemudian, InnoDB tabel mendukung Match... Against .

Yang pertama adalah banyak lebih baik. Di MyISAM tabel itu akan menggunakan indeks teks lengkap terhadap kolom-kolom itu. Yang lain akan melakukan pemindaian tabel penuh melakukan concat pada setiap baris dan kemudian perbandingan.

LIKE hanya efisien jika Anda melakukannya terhadap:

  • kolom (bukan hasil dari suatu fungsi kecuali vendor database Anda mendukung indeks fungsional--Oracle, misalnya--dan Anda menggunakannya);
  • awal kolom (yaitu LIKE 'blah%' sebagai lawan dari LIKE '%blah%' ); dan
  • kolom yang diindeks.

Jika salah satu dari kondisi tersebut tidak benar, satu-satunya cara bagi mesin SQL untuk mengeksekusi kueri adalah dengan melakukan pemindaian tabel penuh. Ini dapat digunakan di bawah sekitar 10-20 ribu baris. Di luar itu dengan cepat menjadi tidak dapat digunakan.

Catatan: Satu masalah dengan MATCH di MySQL adalah sepertinya hanya cocok dengan seluruh kata sehingga pencarian untuk 'bla' tidak akan cocok dengan kolom dengan nilai 'blah', tetapi pencarian untuk 'bla*' akan cocok.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi MySQL tidak berfungsi:2002 Tidak ada file atau direktori seperti itu

  2. Instal MySQL:ERROR:Gagal membuat ekstensi asli permata

  3. PDO::__construct():Server mengirim charset (255) yang tidak diketahui klien. Tolong, laporkan ke pengembang

  4. Hitung selisih waktu antara dua baris

  5. Mengapa mysqli memberikan perintah tidak sinkron?