Je comprends ce que vous essayez d'atteindre. Bienvenue dans le monde d'une variété de bases de données!SQL Server 2000 prend en charge les tables temporaires créées en préfixant un # au nom de la table, ce qui en fait une table temporaire accessible localement (locale à la session) et précédant ## au nom de la table, pour des tables temporaires globalement accessibles, par exemple #MyLocalTable et ## MyGlobalTable respectivement.
SQL Server 2005 et versions ultérieures prennent en charge les tables temporaires (locales, globales) et les variables de table - attention aux nouvelles fonctionnalités sur les variables de table dans SQL 2008 et version 2! La différence entre les tables temporaires et les variables de table n'est pas si grande mais réside dans la manière dont le serveur de base de données les gère.
Je ne voudrais pas parler d'anciennes versions de SQL Server comme 7, 6, bien que je travaille avec eux et il est d'où je viens quand même :-)
Il est courant de penser que les variables de table résident toujours en mémoire mais c'est faux. Selon l'utilisation de la mémoire et le volume de transactions du serveur de base de données, les pages d'une variable de table peuvent être exportées de la mémoire et écrites dans tempdb et le reste du traitement y est effectué (dans tempdb). S'il vous plaît noter que tempdb est une base de données sur une instance sans objets permanents dans la nature mais il est responsable de la gestion des charges de travail impliquant des transactions secondaires comme le tri, et d'autres travaux de traitement qui est de nature temporaire. D'autre part, les variables de table (généralement avec des données plus petites) sont stockées en mémoire (RAM) ce qui les rend plus rapides à accéder et donc moins d'E/S sur le disque tempdb. connectez-vous à tempdb.
Les variables de table ne peuvent pas être indexées tandis que les tables temporaires (locales et globales) peuvent être indexées pour un traitement plus rapide dans le cas où la quantité de données est importante. Vous connaissez donc votre choix en cas de traitement plus rapide avec des volumes de données plus importants par des transactions temporaires. Il convient également de noter que les transactions sur les variables de table ne sont pas enregistrées et ne peuvent pas être annulées, alors que celles effectuées sur les tables temporaires peuvent être annulées! En résumé, les variables de table sont meilleures pour les données plus petites, tandis que les tables temporaires sont préférables pour les données plus importantes traitées temporairement. Si vous souhaitez également un contrôle des transactions correct à l'aide de blocs de transaction, les variables de table ne sont pas une option pour annuler des transactions. Il est donc préférable d'utiliser des tables temporaires dans ce cas. Enfin, les tables temporaires augmenteront toujours l'E/S du disque car elles utilisent toujours tempdb alors que les variables de table ne peuvent pas l'augmenter, en fonction des niveaux de contrainte mémoire. Faites-moi savoir si vous souhaitez obtenir des conseils sur la façon de régler votre tempdb pour gagner beaucoup plus rapidement et dépasser 100%!
J'espère que vous êtes au courant que dans MySQL, les tables temporaires créées par les utilisateurs ne sont pas en mémoire par défaut! Seulement si vous spécifiez ENGINE = MEMORY dans l'instruction CREATE TABLE, la table sera en mémoire. Sinon, la table temporaire sera créée avec le moteur de stockage par défaut, probablement MyISAM ou INNODB, et sauvegardée sur le disque. Ne confondez pas les tables créées par l'utilisateur avec des tables temporaires internes créées par MySQL lors de jointures complexes. Ceux-ci sont créés en mémoire, si possible. –