2009-06-26 7 views

Répondre

6
  • une table en mémoire est une table qui a été entièrement mises en cache, et donc ne donne pas lieu à une physique (disque dur) se lit lors d'une interrogation. Alternativement, il s'agit d'une variable table, déclarée dans un batch ou une fonction, sans persistance. Dépend de ce que vous entendez par "table en mémoire" :)

  • Une table temp (orary) est une table qui sera automatiquement supprimée lorsqu'elle n'est plus nécessaire, généralement lorsque la session de création est terminée. Dans MS SQL, ils commencent par un # (ou deux hashs s'il s'agit de tables temporaires globales, partagées entre plusieurs sessions), et sont souvent créés avec une requête SELECT INTO #TEMPTABLE .... Un tableau croisé dynamique est une forme spéciale de requête où les valeurs dans plusieurs lignes sont résumées, "pivotées" sur un axe, et deviennent des colonnes, où les données récapitulatives deviennent alors les lignes. Cela arrive souvent lorsque vous avez des lignes triées sur des dates; ceux-ci peuvent alors être « pivotent » si vous vous retrouvez avec une colonne pour Janvier, un pour Février, un pour Mars, etc.

2

Heres une bonne lecture sur @temp tables vs #temp tables

Je résumerais comme:

Les variables de table @temp sont stockées en mémoire ... plus vous les utilisez, plus le coût du processeur est élevé ... mais elles peuvent être mises en cache et peuvent ainsi s'exécuter plus rapidement la plupart du temps.

Les tables #temp sont stockées sur le disque, si vous stockez beaucoup de données dans la table temporaire, vous pouvez vouloir suivre cette route, I.E. à des fins de reporting. L'utilisation de PIVOT and UNPIVOT est juste un moyen de "faire pivoter" vos résultats ... donc son accès à la mémoire serait similaire à la façon dont les autres requêtes standard sont effectuées.

Questions connexes