sql >> Databasteknik >  >> RDS >> Mysql

JOINS vs. while uttalanden

Om indexen används korrekt är det nästan alltid effektivare att använda en JOIN. Betoningen läggs till eftersom bästa effektivitet inte alltid är lika med bästa prestanda.

Det finns dock inte riktigt ett enskilt svar; du bör analysera en fråga med EXPLAIN för att säkerställa att indexen verkligen används, att det inte finns någon onödig användning av tillfälliga tabeller etc. I vissa fall , konspirerar villkoren för att skapa en fråga som bara inte kan använda index. I dessa fall kan det vara snabbare att dela upp frågorna i bitar på det sätt du har angett.

Om jag stötte på sådan kod i ett befintligt projekt skulle jag ifrågasätta det:kontrollera frågan, tänk på olika sätt att utföra frågan, se till att dessa saker har övervägts, bygga ett vetenskapligt, faktaunderbyggt argument för eller emot praktiken . Se till att de ursprungliga utvecklarna gjorde sin due diligence, eftersom att inte använda en JOIN ytligt pekar på dålig databas- eller frågedesign. Men i slutändan talar resultaten högt och om alla optimeringar och korrigeringar fortfarande resulterar i en långsammare koppling än att använda frågefragment ger, då råder den snabbare lösningen. Benchmark och agera på resultaten av benchmark; Det finns inget fall inom mjukvarudesign att du ska byta ut dålig prestanda mot att följa godtyckliga regler om vad du bör eller inte bör göra. Den bästa metoden är den bästa metoden.



  1. Dimensions of Dimensions:En titt på Data Warehousings vanligaste dimensionstabelltyper

  2. Förklara oförklarligt dödläge

  3. SQLite skära

  4. Hur man automatiserar databasfailover med ClusterControl