sql >> Database teknologi >  >> RDS >> Mysql

JOINS vs. while-udsagn

Hvis indekserne bruges korrekt, så er det næsten altid mere effektivt at bruge en JOIN. Der lægges vægt på, fordi den bedste effektivitet ikke altid er lig med den bedste ydeevne.

Der er dog ikke rigtig et ensartet svar; du bør analysere en forespørgsel ved hjælp af EXPLAIN for at sikre, at indekserne faktisk bliver brugt, at der ikke er unødvendig brug af midlertidige tabel osv. I nogle tilfælde , konspirerer betingelserne for at skabe en forespørgsel, der bare ikke kan bruge indekser. I disse tilfælde kan det være hurtigere til at adskille forespørgslerne i stykker på den måde, du har angivet.

Hvis jeg stødte på en sådan kode i et eksisterende projekt, ville jeg sætte spørgsmålstegn ved det:tjek forespørgslen, tænk på forskellige måder at udføre forespørgslen på, sørg for, at disse ting er blevet overvejet, opbyg en videnskabelig, faktaunderstøttet sag for eller imod praksis . Sørg for, at de originale udviklere gjorde deres due diligence, da ikke at bruge en JOIN overfladisk peger på dårlig database- eller forespørgselsdesign. I sidste ende taler resultaterne dog højt, og hvis alle optimeringer og rettelser stadig resulterer i en langsommere join end at bruge forespørgselsfragmenter giver, så sejrer den hurtigere løsning. Benchmark og handle ud fra resultaterne af benchmark; der er ingen tilfælde i softwaredesign, at du skal bytte dårlig ydeevne for overholdelse af vilkårlige regler om, hvad du bør eller ikke bør gøre. Den bedste metode er den bedste metode.



  1. Opdater forespørgsel if-sætning til Oracle

  2. Database EAV-model, optegnelse pr. søgning

  3. SQL tidsforskel mellem to datoer resulterer i tt:mm:ss

  4. hvordan man får summen af ​​en kolonne med codeigniter-forespørgsel