sql >> Database >  >> RDS >> Mysql

Wanneer STRAIGHT_JOIN gebruiken met MySQL?

Ik zou het gebruik van STRAIGHT_JOIN niet aanraden zonder een goede reden. Mijn eigen ervaring is dat de MySQL-queryoptimalisatie vaker een slecht zoekplan kiest dan ik zou willen, maar niet vaak genoeg om het in het algemeen te omzeilen, wat je zou doen als je altijd STRAIGHT_JOIN zou gebruiken.

Mijn aanbeveling is om alle query's als gewone JOIN's te laten. Als u ontdekt dat een query een suboptimaal queryplan gebruikt, raad ik u aan eerst te proberen de query een beetje te herschrijven of te herstructureren om te zien of de optimizer dan een beter queryplan zal kiezen. Zorg er ook voor innodb voor dat uw indexstatistieken niet alleen verouderd zijn (TABEL ANALYSEREN ). Dat kan ertoe leiden dat de optimizer een slecht queryplan kiest. Optimizer-hints zouden over het algemeen uw laatste redmiddel moeten zijn.

Een andere reden om geen queryhints te gebruiken, is dat uw gegevensdistributie in de loop van de tijd kan veranderen, of uw indexselectiviteit kan veranderen, enz. naarmate uw tabel groeit. Uw zoekopdrachthints die nu optimaal zijn, kunnen na verloop van tijd suboptimaal worden. Maar de optimizer kan het queryplan niet aanpassen vanwege uw nu verouderde hints. Je blijft flexibeler als je de optimizer de beslissingen laat nemen.



  1. SQL SERVER:het totaal aantal dagen tussen twee datums ophalen

  2. Identiteitsachtige kolom maar gebaseerd op Group By-criteria

  3. Bewaar byte[] in een SQL Server-database vanuit C#

  4. Schrijven naar specifieke schema's met RPostgreSQL