Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
6
Rozdział1:FunkcjeoknawjęzykuSQL
sąnadalpowszechniestosowane.Wzwiązkuztympojawiasiękilkainteresujących
pytań.Dlaczegozalecasięstosowanierozwiązańopartychnazbiorach?Idlaczego
mimototakwieluprogramistówsięgapometodyiteracyjne?Jakieprzeszkodyunie-
możliwiająimstosowaniezalecanegopodejścia?
Abyzrozumiećtenproblem,trzebanajpierwposiąśćpodstawowąznajomośćjęzy-
kaT-SQLizrozumieć,naczymtaknaprawdępolegająmetodyopartenazbiorach.
Wrezultaciemożnasięprzekonać,żewieleosóbpostrzegatechnikiwykonywaniaope-
racjinazbiorachjakomałointuicyjne,wprzeciwieństwiedotechnikopartychnaite-
racji.Wynikatoznaturyludzkiegomyślenia,cowyjaśnięzachwilę.Metodyopar-
tenazbiorachwymagajązupełnieinnegosposobumyślenianiżmetodyiteracyjne.
Językdeklaratywnyioptymalizacja
Niektórzyczytelnicymogązastanawiaćsię,skądwjęzykudeklaratywnym,
takimjakSQL,biorąsięróżnicewydajnościpomiędzydwiemapostaciamitego
samegożądania,takimijakkwerendazfunkcjąoknaibezniej.Wgruncierze-
czyżądaniezawierajedynielogicznądeklarację,niespecyfikujesposobujej
realizacji.DlaczegoimplementacjasystemuSQL,takajakprogramSQLServer
zjęzykiemT-SQL,nierozpoznaje,żedwiezpozoruróżnekwerendyreprezentu-
jąwrzeczywistościtosamożądanieiwefekcieniegenerujetegosamegoplanu
wykonaniadlaobukwerend?
Sytuacjatawynikazkilkuprzyczyn.Popierwszeoptymalizatorprogramu
SQLServerniejestidealny
.OptymalizatorSQLServerjestfantastycznymkom-
ponentemoogromnychmożliwościach,jednaknieobejmujewszystkichpoten-
cjalnychregułoptymalizacji.Podrugieoptymalizatormusizakończyćproces
optymalizacjikwerendywograniczonymczasie.Wprzeciwnymprzypadku
optymalizacjamogłabytrwaćtakdługo,żewefekciewydłużyłabyczaswyko-
naniakwerendy
,zamiastgoskrócić.Wefekciemogłobydojśćdoabsurdalnej
sytuacji,wktórejprocesrealizacjikwerendy
,zamiastopracowaćniekoniecznie
najbardziejoptymalnyplanwykonaniawciągukilkudziesięciumilisekundizre-
alizowaćgowciągukilkusekund,przezwielegodzinanalizowałbywszystkie
możliweplanywykonaniawnadzieinaodnalezienietego,którypozwolioszczę-
dzićkilkasekund.Dlategozewzględówpraktycznychoptymalizatormusiogra-
niczyćczaspoświęconynaprocesoptymalizacji.Woparciuotakieczynniki,jak
m.in.rozmiartabelwykorzystywanychwkwerendzie,systemSQLServeroblicza
dwiewartościprogowedlakwerendy:jednatokosztocenianyjakowystarczająco
dobry,natomiastdrugatomaksymalnyczas,poktórymprocesoptymalizacji
zostaniezatrzymany
.Jeśliprzekroczonazostaniektórakolwiekztychwartości
progowych,procesoptymalizacjizostajezatrzymanyisystemSQLServerwyko-
rzystujenajlepszyzodnalezionychdotejporyplanówwykonania.