J'ai une vue qui contient une requête qui peut renvoyer une grande quantité de données. Ensuite, dans mon application Delphi, j'appelle à cette vue avec une clause WHERE
pour filtrer les résultats que je veux.Quand SQL Server évalue-t-il les clauses where dans une vue?
Donc, ma question est: quand le serveur SQL évaluera-t-il cette clause Where? Je veux dire, si j'ai appelé la vue suivante getSales
(il est juste un exemple):
select * from sales
et la requête a:
select * from getSales where customer = :id
Qu'est-ce que SQL Server va faire? Va-t-il rechercher directement les ventes dont dispose le client d'identification fourni?
- Ou cherchera-t-il toutes les ventes et filtre le par ID client et après les obtenir les résultats?
En pré-SQL Server 2008, il peut y avoir des problèmes de performances dus à [push de prédicat] (http://jahaines.blogspot.ie/2010/03/performance-tuning-101-what-you-will_17.html) , mais les versions ultérieures devraient fonctionner plus ou moins comme prévu. –
Dans la requête que je veux exécuter, les champs de paramètres font partie de la clé primaire de la table (le PK est une combinaison de l'identifiant client et de l'identifiant de la vente, et le filtre de la vue dépend uniquement du client – davidrgh
Il devrait utiliser la clé primaire/index. Exécutez la requête dans SSMS et vérifiez le plan d'exécution pour être sûr. –