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

Bisakah Anda mengindeks subquery?

Pertama-tama Anda perlu tahu bahwa membuat tabel sementara benar-benar solusi yang layak. Tetapi dalam kasus tidak ada pilihan lain yang berlaku yang tidak benar di sini!

Dalam kasus Anda, Anda dapat dengan mudah meningkatkan kueri Anda sebagai FrankPl ditunjukkan karena sub-kueri dan kueri utama Anda dikelompokkan berdasarkan bidang yang sama. Jadi, Anda tidak memerlukan sub-kueri apa pun. Saya akan menyalin dan menempelkan solusi FrankPl demi kelengkapan:

SELECT o.property_B, SUM(o.score1), SUM(o.score2)
FROM o
GROUP BY property_B;

Namun itu tidak berarti tidak mungkin menemukan skenario di mana Anda berharap dapat mengindeks sub-kueri. Dalam kasus mana Anda punya dua pilihan, pertama adalah menggunakan tabel sementara seperti yang Anda tunjukkan sendiri, memegang hasil sub-kueri. Solusi ini menguntungkan karena didukung oleh MySQL untuk waktu yang lama. Hanya saja tidak layak jika ada sejumlah besar data yang terlibat.

Solusi kedua adalah menggunakan MySQL versi 5.6 atau lebih tinggi . Dalam versi terbaru dari algoritma MySQL baru dimasukkan sehingga indeks yang ditentukan pada tabel yang digunakan dalam sub-kueri juga dapat digunakan di luar sub-kueri.

[PERBARUI]

Untuk versi pertanyaan yang diedit, saya akan merekomendasikan solusi berikut:

SELECT o.property_B, SUM(IF(o.property_A = 'specific_A', o.score1, 0)), SUM(o.score2)
FROM o
GROUP BY property_B
HAVING SUM(IF(o.property_A = 'specific_A', o.score1, 0)) > 0;

Tetapi Anda harus mengerjakan HAVING bagian. Anda mungkin perlu mengubahnya sesuai dengan masalah Anda yang sebenarnya.



  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 terbaik untuk menyimpan jam kerja dan menanyakannya secara efisien

  2. #1366 - Nilai integer salah:MYsql

  3. Sangat gigih /opt/lampp/bin/mysql.server:264:kill:Tidak ada proses seperti itu. Xampp/ubuntu 16.04

  4. Masalah Pengkodean Karakter

  5. CurrentUtcDateTime tidak ada - Kerangka Entitas dan MySql