..
Прво решење је да користите ПРИДРУЖИТЕ у упиту директно, преписивање на следећи начин
ИЗАБЕРИТЕ ПЦ.ЛастНаме + +''ПЦ.ФирстНаме [Име клијента]
, СЦ.ЦустомерТипе
ИЗ Салес.Цустомер СБ
ЛЕФТ ОУТЕР ЈОИН ДА Салес.Индивидуал
О = СЦ.ЦустомерИД СИ.ЦустомерИД
ЛЕФТ ОУТЕР ЈОИН Персон.Цонтацт рачунара
О = СИ.ЦонтацтИД ПЦ.ЦонтацтИД
У овој другој верзији Једноставно сам користио табеле у функцији гетНаме стављајући их у ФРОМ клаузуле. Такође сам заменио позив функције гетНаме на листи колона у СЕЛЕЦТ директним цонцатенатинг две колоне за контакт табели.
Ево шта Профилер показује извршава овај упит

Као што можете видети лице бројних позива из претходне верзије упита, нова верзија је један позив који наравно значи велику уштеду у погледу перформанси.
Хајде сада да видимо шта се дешава конверзијом оригиналних скаларне функције гетНаме у функцији која враћа табела уместо (Стаза за табелу). Прво треба да направите функцију и деноминиамола ГетНамеТабле
ЦРЕАТЕ ГетНамеТабле ФУНКЦИЈА (@ купца инт) ПОВРАТАК ТАБЕЛА КАО (Повратак ИЗАБЕРИТЕ Презиме + "," + Име [Име клијента] ИЗ Салес.Цустомер СБ ЛЕФТ ОУТЕР ЈОИН ДА Салес.Индивидуал О = СЦ.ЦустомерИД СИ.ЦустомерИД ЛЕФТ ОУТЕР ЈОИН Персон.Цонтацт рачунара О = СИ.ЦонтацтИД ПЦ.ЦонтацтИД ГДЕ ИДКупца = @ СЦ.ЦустомерИД )
Као што можете видети упит који екстракти подаци једнака гетНаме скаларног функције, једина разлика је у томе што функција враћа сто ГетНамеТабле уместо варцхар вредности. Да бисте користили ову нова функција које користи је неопходно да се користи КРСТ ПРИЈАВИТЕ оператеру, и то
СЕЛЕЦТ И. [име корисника]
, СЦ.ЦустомерТипе
ИЗ Салес.Цустомер СБ
КРСТ ПРИЈАВИТЕ ГетНамеТабле (СЦ.ЦустомерИД)
У овом случају резултат следеће ће профајлер

Хајде да коначно пример како да напише оригинални упит ефикасније. Овај пут ћемо креирати и користити следеће приказ
ЦРЕАТЕ ВИЕВ Виев_ГетНаме
КАО
ИЗАБЕРИТЕ Презиме + "," + Име [Име клијента]
, СЦ.ЦустомерИД
ИЗ Салес.Цустомер СБ
ПРИДРУЖИТЕ Салес.Индивидуал
О = СЦ.ЦустомерИД СИ.ЦустомерИД
ПРИДРУЖИ рачунара Персон.Цонтацт
О = СИ.ЦонтацтИД ПЦ.ЦонтацтИД
ГО
На основу овога поглед можемо да напишемо упит на следећи начин
В. СЕЛЕЦТ [Име клијента]
, ЦустомерТипе
ИЗ Салес.Цустомер СБ
ЛЕФТ ОУТЕР ЈОИН Виев_ГетНаме В
О СЦ.ЦустомерИД ИДКупца = Р
У овом случају резултат Профилер једнака оној претходна два примера. Ова три примера су еквивалентни, иако представљају мале разлике у перформансама. Најефикаснији приступ је КРСТ ПРИДРУЖИТЕ резултат нешто нижи процесора коришћење (можете видети из података Профилер).
Ови примери су за циљ да нагласи да је употреба скаларног функције у листи колона у СЕЛЕЦТ или у ВХЕРЕ је неефикасна пракса. Негативни ефекти ове праксе је директно пропорционална количини података добијених из упита који се користе. Када се користи на тај начин, скаларне функције се понаша као курсор који је више пута позвао, а затим изневерити развој наше упутства. Ако се, дакле, користи у неким од ваших упита сматра скаларне функције препише исту у једном од предложених алтернатива.
Они се види у овом чланку су само неке од могућих мера за побољшање учинка наших Т-СКЛ упита и друге корисне уређаје ће се расправљати у будућности чланака.
| |
Курс МС Аццесс
Сазнајте како да направите и управљање базама података лако и брзо. Полазећи од 29 €. |
| |
Наравно МиСКЛ
Управљање опен соурце базу података. Полазећи од 39 €. |
| |
Наравно базе података и СКЛ
Креирање и управљање релационим базама података. Полазећи од 39 €. |