Kiat profesional Hindari SELECT *
atau SELECT table.*
dalam kueri yang sensitif terhadap kinerja. Alih-alih pilih, berdasarkan nama, kolom yang benar-benar perlu Anda gunakan
Kiat profesional MySQL memiliki ekstensi tidak standar yang terkenal untuk GROUP BY
yang Anda gunakan, dan mungkin disalahgunakan. Baca ini. https://dev.mysql.com/doc /refman/8.0/en/group-by-handling.html
Jika Anda mengikuti tip pro pertama, mengikuti tip kedua akan jauh lebih mudah.
Kiat profesional Hindari "melempar" banyak indeks kolom tunggal dengan harapan mempercepat kueri Anda. Sebagai gantinya, buat indeks, sering kali indeks gabungan, sesuai dengan kebutuhan kueri Anda yang sebenarnya. Baca https://use-the-index-luke.com ini .
Kiat profesional Using temporary; using filesort
muncul di EXPLAIN output belum tentu buruk. Ini berarti bahwa mesin kueri harus men-cache sebagian hasil yang ditetapkan sebelum mengembalikannya. temporary
hal ini bukan tabel yang sebenarnya, itu adalah struktur RAM. Jika terlalu besar sehingga membanjiri RAM, MySQL akan menumpahkannya ke disk. Tapi milikmu tidak.
Semua itu dikatakan, mari perbaiki kueri Anda. Saya kira Anda ingin mengambil baris dengan idCartDATA
terbesar nilai untuk setiap CartSplitData.SUPPLIERID
.
Jadi mari kita tulis itu sebagai subquery.
SELECT max(IDCartDATA) AS IDCartDATA, SUPPLIERID
FROM CartSplitData
GROUP BY SUPPLIERID
Permintaan ini dapat dipercepat, secara dramatis, dengan meletakkan indeks gabungan pada CartSplitData:(SUPPLIERID, IDCartDATA)
.
Selanjutnya, tulis ulang kueri utama Anda untuk menemukan baris yang cocok dengan id dalam subkueri tersebut.
SELECT CartData.* /* * hammers performance */
CartSplitData.* /* * hammers performance */
FROM CartData
JOIN CartSplitData ON CartSplitData.IDCartDATA = CartDATA.IDCartData
JOIN (
SELECT max(IDCartDATA) AS IDCartDATA, SUPPLIERID
FROM CartSplitData
GROUP BY SUPPLIERID
)x ON x.SUPPLIERID = CartSplitData.SUPPLIERID
AND x.IDCartData = CartSplitData.IDCartData
WHERE CartData.CartOrderref = 'XXXXXXXXX'
Indeks Anda di CartData.CartOrderref
akan membantu kueri luar ini, seperti halnya indeks gabungan yang dibuat ^^^.