La requête suivante entraîne une utilisation énorme du processeur et une latence élevée dans mon environnement de base de données. J'ai essayé d'utiliser différents types d'index pour améliorer les performances des requêtes, mais malheureusement, aucun index n'a contribué à améliorer les performances. Existe-t-il une suggestion pour réécrire la requête pour obtenir le même résultat.
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);
Cet indice s'apparie
view_mats
有益:INDEX(mngy, nonUnixjdjf)
。也就是说,对于trip_dsty
:INDEX(mngy, jdjf)
.et (éventuellement) supprimer
idx_n1
puisqu'il ne contient que le début de cet index.(Je ne connais pas entièrement les magasins de colonnes ; le conseil ci-dessus concerne les index InnoDB ; il peut s'appliquer ici.)
En général,
(m,n)
是无用的,并且可能导致舍入错误。double(20,10)
可能应该是普通的double
或DECIMAL(20,10)
sur Float et Double.LIMIT 10000
- Avez-vous vraiment livré autant de lignes au client ? pelleter autant est également un problème de performance.