J'ai le problème suivant dans SQL Server 2005: essayer d'insérer des lignes dans une variable de table prend beaucoup de temps par rapport à la même insertion utilisant une table temporaire.
Ceci est le code à insérer dans la variable de table
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
Ceci est le code à insérer dans la table temporaire
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
La table temporaire n'a pas de clés ou d'index, la partie sélection est la même entre les 2 requêtes et le nombre de résultats renvoyés par la sélection est ~ 10000 lignes. Le temps nécessaire pour exécuter la sélection seule est d'environ 10 secondes.
La version de la table temporaire prend jusqu'à 10 secondes pour s'exécuter, j'ai dû arrêter la version variable de la table après 5 minutes.
Je dois utiliser une variable de table car la requête fait partie d'une fonction de valeur de table, qui ne permet pas d'accéder à une table temporaire.
Plan d'exécution pour la version variable de table
Plan d'exécution pour la version de table temporaire
EXEC
une fonction ... devinez que j'avais tort