Les tables temporaires sont un gros NON dans SQL Server.
- Ils provoquent des recompilations du plan de requête, ce qui est coûteux.
- La création et la suppression de la table sont également des opérations coûteuses que vous ajoutez à votre processus.
- S'il y a une grande quantité de données vers les données temporaires, vos opérations seront lentes en raison du manque d'index. Vous POUVEZ créer des index sur des tables temporaires. Mais je ne recommanderai jamais une table temporaire pour quoi que ce soit avec une grande quantité d'enregistrements.
Votre autre approche :créer puis supprimer des tables régulières crée simplement la même surcharge.
Une autre approche :à l'aide de tables existantes, l'augmentation des lignes avec une colonne supplémentaire pour différencier les lignes se rapportant à chaque utilisateur/session pourrait être utilisée. Supprime le fardeau de créer/supprimer les tables mais, alors, vous devrez être paranoïaque avec le code qui génère la valeur pour différencier les lignes ET vous devrez développer un moyen de maintenir la table pour les cas où une session s'est terminée prématurément et il reste des restes (lignes qui n'ont pas été supprimées à la fin du traitement).
Je vous recommande de repenser votre stratégie de traitement. Certaines alternatives sont aussi simples que l'utilisation de requêtes corrélées, de tables dérivées ou de variables de table. Jetez un œil à :http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx
Modifier : L'approche consistant à créer et à supprimer des tables régulières et l'approche consistant à réutiliser une table régulière augmentée d'un champ supplémentaire :les deux généreront des recompilations du plan de requête car la quantité de données modifiées déclenchera la réévaluation des statistiques de la table. Encore une fois, votre meilleure approche consiste à trouver d'autres moyens de traiter vos données.