Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2015-08-20, 08:08
  #13
Medlem
fnirps avatar
Citat:
Ursprungligen postat av Trillske
...

Har förstått det som att standard är att WHERE alltid behandlas före SELECT oavsett ramverk d.v.s. att WHERE är det första som behandlas i:
SELECT
FROM . INNER JOIN .. ON
WHERE (.this=.that)

Vilket då gjort att jag sätter väldigt mycket fokus i WHERE-statement och kan vara rätt trygg bara jag vet att mitt WHERE-statement alltid gör en tillräckligt bra selektering.

...

Har du eller någon något bra tips angående vart man kan studera detta på ett lite mer systematiskt sätt än att hoppa fram och tillbaka mellan helt random diskussioner på nätet? Mina frågor blir möjligen lite noobiga, men hela området känns lite som att man antingen kan allt eller inget.

Frågar man inte, får man inga svar och det är nog få som är absolut fullärda inom ett ämne.

Problemet med att förstå hur en databasfråga fungerar, är rätt komplex. Först och främst är det så att olika databasmotorer (tex SQL Server, Oracle, PostgreSQL och MySQL) jobbar internt på sitt eget lilla sätt som de finner är bäst för dem.

För att ytterligare lägga komplexitet på det hela, så kan en databasfråga i samma databas, med samma databasmotor, exekveras på olika sätt, beroende på hur datat ser ut i berörda tabellerna just vid frågetillfället, eller hur många användare som är involverade i dessa tabeller just då.

De flesta databasmotorer har någon form av optimering innan de sätter igång och köra frågan. Dvs den "skriver om" din sql-fråga på ett, för databasmotorn, bättre sätt. Är det många anrop med samma fråga som levererar samma svar, kan databasmotorn till och med cacha svaret. Allt för att förbruka minimalt med prestanda.

Din användning av WHERE selekterar mycket riktigt ut rader, men gör du något fel i JOIN, kan du få oönskade dubblettrader eller något annat otrevligt fenomen som kan vara svårt att se med blotta ögat. Allt hänger ihop. Men känns svaret rimligt och det tar acceptabelt lång tid att få tillbaka ett resultatset. Ja, då är det bra precis som du gjort. Optimera och trimma bara där det absolut behövs.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback