Pertanyaan berikut menyebabkan penggunaan CPU yang besar dan kependaman yang tinggi dalam persekitaran pangkalan data saya. Saya cuba menggunakan pelbagai jenis indeks untuk meningkatkan prestasi pertanyaan, tetapi malangnya mana-mana indeks tidak membantu meningkatkan prestasi. Adakah terdapat sebarang cadangan untuk menulis semula pertanyaan untuk mendapatkan hasil yang sama.
query SELECT kln.qsw, kln.mngy FROM ( SELECT kln2.mngy, MAX(kln2.nonUnixjdjf) dm_hj FROM mfh.view_mats kln2 WHERE kln2.jdjf <= '2022-10-19 10:47:25.000000' GROUP BY kln2.mngy ) pun_ghky JOIN pun_ghky.mngy = kln.mngy);
Indeks ini berpasangan
view_mats
有益:INDEX(mngy, nonUnixjdjf)
。也就是说,对于trip_dsty
:INDEX(mngy, jdjf)
.dan (mungkin) keluarkan
idx_n1
kerana ia hanya mengandungi permulaan indeks itu.(Saya tidak sepenuhnya mahir dalam kedai lajur; nasihat di atas adalah untuk indeks InnoDB; ia mungkin terpakai di sini.)
Secara umum,
(m,n)
是无用的,并且可能导致舍入错误。double(20,10)
可能应该是普通的double
或DECIMAL(20,10)
pada Float dan Double.LIMIT 10000
- Adakah anda benar-benar menghantar baris sebanyak itu kepada pelanggan? Menyodok terlalu banyak juga merupakan isu prestasi.