Votre question est mieux répondu par les clauses "With" (CTE's je pense, dans MSSS). Vraiment la meilleure question est: Dois-je stocker cette valeur calculée ou recalculer pour chaque ligne, chaque fois que je interroge la table.
Y a-t-il 10 lignes dans le tableau et toujours 10 lignes?
Des lignes sont-elles ajoutées en permanence?
Avez-vous une stratégie de purge en place ou laissez-la simplement pousser?
Interrogez cette table seulement une fois par mois?
S'il s'agit d'une fonction «longue durée» (même après que vous l'ayez optimisée), pourquoi voulez-vous l'exécuter plus d'une fois, jamais?
Vous avez demandé une fois, mais vous demandez vraiment une fois par ligne, par requête.
Stocker la réponse dans un index ou "colonne virtuelle"
Plus:
Calculer exactement une fois par ligne. Les temps de requête ne croissent pas linéairement.
Moins: Augmentations insérer/mettre à jour le temps
Calcul chaque fois
Plus:
temps d'insertion/mise à jour optimisée
Inconvénients: temps de requête augmente avec le nombre de lignes. (non évolutif)
Si vous interrogez une fois par mois, pourquoi vous souciez-vous de la performance, accordez quelque chose qui a un impact important sur vos opérations (très légèrement facétieux).
Si vous n'insérez pas un paquet (selon votre matériel) de lignes par seconde, est-ce que passer ce temps à l'avance va faire une grande différence?
Qu'est-ce que Cross Apply exactement? – Gzim
@Gzim - Pensez à Cross Apply en tant que mélange entre une table dérivée et une sous-requête corrélée. En effet, il vous permet de rejoindre une sous-requête qui référence des éléments en dehors de la requête. Dans mon exemple, je fais référence à col1 et col2 à partir d'une autre table de la clause From. Voici un autre article sur le sujet: http://www.sqlteam.com/article/using-cross-apply-in-sql-server-2005 – Thomas
Oh mon garçon c'est si puissant. Surtout quand vous avez des cas compliqués lors de l'insertion et la sélection d'une table (en même temps) et aussi d'une table UDF qui accepte les paramètres de la table sélectionnée. Thanx Thomas. – Gzim