Adatbázistervezés Blog

Az adatbázistervezéstől az üzleti intelligencia rendszerekig (nem csak) kisvállalkozóknak
Home » Adatbázistervezés Blog | T-SQL

Mi baj van a SELECT * FROM-mal?

1. augusztus 2016 by Babaics Alexandra 0 Megjegyzések


Semmi.

Egészen addig, amíg valaki nem élesben használja.



Mi az a SELECT * FROM táblanév?


Az SQL-ben, ha szeretnénk villámgyorsan lekérdezni a táblánk tartalmát, akkor nem muszáj kiírnunk a Select után az összes oszlopnevet, hanem elég egy csillagot írnunk.

És nagyon könnyű használni! Előrevehetjük például a számunkra érdekes oszlopokat, úgy hogy azért kiíratjuk az összeset is.


Remek és gyors megoldás, de szigorúan fejlesztési időben! Éles programban alkalmazni főben járó bűn! 

Ha egy neked dolgozó programozó ezt alkalmazza a neked készülő programban, akkor máris kezelheted őt fenntartásokkal.


De mi is a baj éles környezetben a SELECT * FROM -mal?


Sok minden.

  • Lekérdezi az összes adatot a táblából, akkor is, ha száz adat van, akkor is, ha több millió. Ha gyorsan növekszik az adatmennyiség, akkor látványos lassulás lesz a programban.
          Nagyméretű éles adatbázisban egy milliós lekérdezés csak úgy véletlenül az adatbázis egész teljesítményére is negatív hatással lehet.
  • Lekérdezi az összes oszlopot a táblából, akármilyen adat legyen is benne.
          Ezek időigényes műveletek. A sorok és az oszlopok mennyiségének növekedése arányában egyre több idő kell a tábla teljes lekérdezéséhez.

Nézzünk egy rossz példát!

Képzeljük el azt a helyzetet, hogy a magát programozónak beállító ember beírja a programkódba a ’Select * From Tanfolyamok’  lekérdezést, aztán a neki szükséges mezőket leválogatja programszinten,  így szépen működik a program (egy ideig).

Aztán jön a főnökünk és kitalálja, hogy a tanfolyami anyagoknak készítsünk borítót és egy rövid kivonatot, hogy kitegyük a céges honlapra. Tároljuk adatbázisban, ha már van!
A tanfolyam táblában pont jó, úgyis kevés sort és kevés oszlopot tartalmaz, nem érdemes külön táblát csinálni. Tehát bekerül egy oszlop, ami pdf-fájlokat tartalmaz és bekerül egy oszlop, amely meg jpg-eket.

Egyszer csak jönnek a drágán kifejlesztett programunk használói, hogy látványosan belassult a program.  Vajon miért?

Gondolom már kilogikáztad a választ. A program már nem csak azt a néhány sort, meg oszlopot kérdezi le a Select * From Tanfolyamok –kal, hanem tonnányi bináris kódot a képek és a pdf-ek miatt.


A jó megoldás

Csak azokat az oszlopokat (Írjuk ki az oszlopneveket) és sorokat (WHERE feltétel alkalmazása) kérdezzük le az adatbázisból, amelyre szükségünk van! Csak pár másodperccel tart tovább a kód megírása, de megér annyit, hogy ne kelljen pár hónappal később egy rakás pénzt kifizetni egy másik programozónak, hogy optimalizálja a teljesítményét a programunknak.



Megjegyzések lezárva