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

Pencarian beberapa ID MySQL

MySQL tidak dapat mengindeks tampilan sehingga yang Anda inginkan tidak mungkin di MySQL .

Anda dapat menggunakan mesin pengindeksan teks lengkap eksternal seperti Sphinx dan memuat data di sana menggunakan kueri dengan JOINS

Atau, Anda dapat membuat tabel denormalisasi:

CREATE TABLE ftsearch
        (
        teacherId INT PRIMARY KEY,
        teacherBiography TEXT,
        subject1 TEXT,
        subject2 TEXT,
        subject3 TEXT,
        )
ENGINE=MyISAM

dan isi dengan query ini:

INSERT
INTO    ftsearch
SELECT  teacherId, teacherBiography,
        s1.name, s2.name, s3.name
FROM    teacherProfile
LEFT JOIN
        subject s1
ON      s1.id = subjectOneId 
LEFT JOIN
        subject s2
ON      s2.id = subjectTwoId 
LEFT JOIN
        subject s3
ON      s3.id = subjectThreeId 

tepat waktu.

Sebenarnya, jika semua tabel Anda adalah MyISAM , Anda dapat menerapkan kueri penelusuran teks lengkap (dalam mode boolean) ke gabungan, tanpa harus membuat indeks teks lengkap.

Katakanlah, jika Anda mencari '+Jones +math +physics' , di mana Jones adalah nama belakang guru dan math dan physics adalah subjek, Anda dapat melakukan kueri ini:

SELECT  teacherId, teacherBiography,
        s1.name, s2.name, s3.name
FROM    teacherProfile
LEFT JOIN
        subject s1
ON      s1.id = subjectOneId 
LEFT JOIN
        subject s2
ON      s2.id = subjectTwoId 
LEFT JOIN
        subject s3
ON      s3.id = subjectThreeId 
WHERE   MATCH(teacherBiography) AGAINST ('+Jones' IN BOOLEAN MODE)
        AND MATCH(t.teacherBiography, s1.name, s2.name, s3.name) AGAINST ('+Jones +math +physics' IN BOOLEAN MODE)

MATCH(teacherBiography) AGAINST ('+Jones') akan menggunakan FULLTEXT indeks pada teacher , jika ada; MATCH kedua akan menyaring hasil dengan baik.

Kueri yang melibatkan OR kondisi atau penyortiran relevansi lebih kompleks.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menghindari kesalahan kehabisan memori di browser karena terlalu banyak panggilan ajax

  2. Cara lebih cepat untuk menghapus baris yang cocok?

  3. Metode otentikasi 'caching_sha2_password' tidak didukung oleh plugin yang tersedia

  4. Bisakah Mysql Membagi kolom?

  5. Pertandingan teks lengkap () terhadap () mengembalikan set kosong