SQL: quina diferència hi ha entre una taula temporal i una consulta?


Resposta 1:

Una taula temporal és emmagatzematge físic, a la memòria i al disc. Una consulta és una consulta. Aquesta és la diferència. Dins d'un procés de lots, es pot fer referència a una taula temporal, per la seva naturalesa física, diverses vegades dins del lot. Només es pot fer referència a una sub pregunta a la consulta. Oh, segur, es pot escriure diverses vegades, però s'ha de resoldre cada vegada que s'escrigui. Mentre que, la taula temporal és emmagatzematge, de manera que no es reconstitueix cada vegada que la feu referència.

Vaig demanar resposta.


Resposta 2:

Una taula temporal és una taula basada en la sessió actual a la memòria (temporal). Després de la sessió, la taula temporal desapareix, similar a una Expressió de taula comuna (CTE) que s'utilitza per produir resultats a la memòria (no permanents).

Penseu en una sub-consulta que es combinen dues consultes per produir resultats. Les sub-consultes tenen dos tipus diferents, una sub-consulta correlacionada on la consulta externa depèn de la consulta interna i una sub-consulta no correlacionada que es pot executar a qualsevol de les parts o a les dues parts de la sub-consulta. Segons la ubicació de la segona part de la subcripció de la clàusula, es basa en la obtenció de resultats.

Tingueu en compte que la clàusula SELECT pot fer múltiples resultats de files, FROM només pot fer una única línia de resultats i WHERE es basa en filtrar diverses files en resultats per a la sortida.

No recomanaria fer una sub-consulta a menys que sigui l’única forma, perquè SQL Server s’optimitza per fer-ne ajuntaments, no sub-consultes i moltes sub-consultes poden convertir-se en ajuntaments, cosa que accelera el rendiment. Les taules de temp són ideals per quan no necessiteu una taula permanent per recopilar dades per mostrar resultats.


Resposta 3:

La taula @temp pot ser preguntada / inserida / actualitzada moltes vegades en algun codi T-SQL (proc o func). a sota del capó es troba una taula #temp en una base de dades temporal

les subquestes són efemera vs tabla @temp. Es tracta només d'una declaració de declaracions des del punt de vista de T-SQL o d'un conjunt de files no modificable des del punt de vista de les dades.

No podeu inserir / actualitzar / suprimir a la consulta però podeu fer-ho a la taula @temp

Heu d'utilitzar CTE per multiplicar la selecció de la sol·licitud.