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

bisakah kita menghindari fasih dalam jumlah besar catatan?

Mari kita lihat salah satu bagiannya.

if(!empty($filter['keyword'])) {
   $leads=$leads->where(function ($q) use ($filter) {
          $q->where('ld_name','like', "%".$filter['keyword']."%")
            ->orWhere('ld_email','like', "%".$filter['keyword']."%")
            ->orWhere('ld_phoneno','like', "%".$filter['keyword']."%");
       });
 }

Skema pencocokan kata kunci ini secara inheren, dan sangat berbahaya, lambat. Ini lambat di SQL Eloquent dan asli. Tidak mungkin itu bisa bekerja di MySQL tanpa melakukan pemindaian tabel penuh . Artinya, ia harus memeriksa setiap baris tabel Anda untuk mencari kecocokan dan tidak dapat, di MySQL, mengeksploitasi skema pencarian yang diindeks. Mengapa?

column LIKE 'constant%'

dapat melihat indeks pada column dan dengan cepat menemukan nilai apa pun yang dimulai dengan 'constant' . Tapi

column LIKE '%constant%'

harus melihat setiap nilai dalam tabel. % leading terkemuka membuat pencarian indeks tidak berguna.

Di MySQL Anda sebaiknya menyelidiki pencarian FULLTEXT MySQL sebagai cara menangani pencarian kata kunci Anda. (Versi postgreSQL terbaru dapat menangani kueri semacam ini secara langsung dengan jenis indeks yang berbeda, tetapi tidak dengan MySQL.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python 3.5 - Django 1.10 - kesalahan instalasi windows 7 mysqlclient

  2. MySQL Integer vs indeks DateTime

  3. Laravel &InnoDB

  4. Python, Konversi 9 Tuple tanggal UTC ke format datetime MySQL

  5. MySQL LIKE membatasi