SQL: у чым розніца паміж часовай табліцай і запытам?


адказ 1:

Часовая табліца - гэта фізічная памяць у памяці і на цвёрдым дыску. Запыт - гэта запыт. У гэтым вялікая розніца. На часовую табліцу можна спасылацца некалькі разоў у працэсе партыі з-за яе фізічнага характару ў партыі. На запыт можна спасылацца толькі ў запыце. Вядома, вы можаце напісаць яго некалькі разоў, але гэта трэба вырашаць кожны раз, калі яно напісана. У той час як часовая табліца - гэта крама, яна не ўзнаўляецца кожны раз, калі вы спасылаецеся на яе.

Папрасілі адказаць.


адказ 2:

Часовая табліца ўяўляе сабой табліцу, заснаваную на бягучай сесіі ў памяці (часовай). Пасля сеансу часовая табліца знікае, падобна на звычайны выраз табліцы (CTE), які выкарыстоўваецца для дасягнення вынікаў у памяці (не пастаянных).

Падумайце пра запыт, як атрымаць два вынікі, каб атрымаць вынікі. Падзапыты бываюць двух тыпаў, суаднясны запыт, дзе знешні запыт залежыць ад унутранага запыту, і некарэляцыйны запыт, які можа быць запушчаны ў любой частцы або ў абедзвюх частках запыту. У залежнасці ад таго, дзе знаходзіцца другая частка запыту ў раздзеле, гэта грунтуецца на выніках.

Звярніце ўвагу, што пункт SELECT можа вярнуць некалькі выніковых радкоў, FROM можа выканаць толькі адзін радок, і WHERE заснавана на фільтрацыі некалькіх радкоў для атрымання вынікаў для вываду.

Я б не рэкамендаваў запускаць запыт, калі толькі гэта адзіны спосаб, таму што SQL Server аптымізаваны для далучэння, а не для падзапытаў, і многія падзапыты могуць стаць аб'яднаннямі, што паскарае прадукцыйнасць. Тэматычныя табліцы выдатна падыходзяць, калі вам не патрэбна пастаянная табліца для збору дадзеных для адлюстравання вынікаў.


адказ 3:

Табліцу @ temp можна шмат разоў запытваць / устаўляць / абнаўляць у кодзе T-SQL (proc ці func). Пад капотам знаходзіцца часовая табліца # temp

Падзапыты - efemeral vs @temp. З пункту гледжання T-SQL, гэта проста ўмова дэкларавання альбо, з пункту гледжання дадзеных, нязменны набор радкоў.

Вы не можаце ўставіць / абнавіць / выдаліць у запыце, але ў табліцы @ temp

Вы павінны выкарыстоўваць CTE для памнажэння выбару з запыту.