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

meningkatkan kueri artikel terkait MySQL

Pertama-tama, mohon maaf saya mengubah nama tabel sedikit menjadi message dan message_tag untuk keterbacaan.

Kedua, saya tidak menguji ini. Gunakan itu sebagai petunjuk daripada jawaban yang pasti.

Kueri menggunakan dua subkueri, yang mungkin tidak begitu efisien, mungkin ada ruang untuk perbaikan. Pertama, kueri terdalam mencari tag dari pesan saat ini. Kemudian, kueri tengah mencari pesan yang ditandai dengan setidaknya satu tag umum. Pengelompokan digunakan untuk mendapatkan message_id unik dan mengurutkannya berdasarkan jumlah tag umum. Terakhir, JOIN digunakan untuk memuat detail tambahan dan untuk menyaring pesan lama.

Anda mungkin memperhatikan saya menggunakan tanda tanya alih-alih '$xyz' . Ini untuk menghindari kekhawatiran tentang keluarnya konten variabel.

SELECT message_id, title, date
FROM message
RIGHT JOIN (SELECT message_id, COUNT(*)
            FROM message_tag
            WHERE tag_id IN 
                (SELECT MT.tag_id FROM message_tag MT WHERE MT.message_id = ?)
            GROUP BY message_id
            ORDER BY COUNT(*) DESC) RELATED_MESSAGES
            ON message.message_id = RELATED_MESSAGES.message_id
WHERE date < ?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql, pilih id yang dikelompokkan berdasarkan kolom yang berbeda (pilih semua id untuk setiap domain unik)

  2. Menemukan tren dalam banyak data teks

  3. String Koneksi MySql Hanya Baca MVC3

  4. mysqldump dari kueri

  5. Karakter Non Latin &aduh