Une simple Select SQL est une requête qui s'exécute indéfiniment pour un ID particulier dans SQL Server 2012.
Cette requête s'exécute indéfiniment; il doit renvoyer 10000 lignes:
select * from employees where company_id = 12
Si je change la requête en
select * from employees where company_id = 34
, elle renvoie 7000 lignes très rapidement. / p>
Employés est une vue créée en joignant différentes tables.
Peut-il y avoir un problème dans la vue?
3 Réponses :
Une possibilité est que vous ayez une très grande table. Une telle requête analyse probablement les tables entières et renvoie des lignes qui correspondent au fur et à mesure qu'elles sont rencontrées.
Je suppose que les lignes de la société 12 sont rencontrées avant les lignes de la société 34.
Si tel est le cas, un index sur (company_id) devrait vous aider.
Il peut également y avoir d'autres causes. Voici deux autres possibilités:
Il peut y avoir d'autres possibilités également.
Salut Gordan, Merci pour l'explication. J'ai même changé la limite à 1 mais je fonctionnais toujours pour toujours
Une des choses que vous pouvez faire pour accélérer le processus est d'indexer la colonne sur company_id car un index b-tree accélérerait la recherche.
Sans regarder la structure de la table et le plan d'exécution, voici quelques suggestions en dehors de ce que Gordon a déjà couvert:
Y a-t-il un plan d'exécution différent? Si oui, merci de le publier.
Aucune différence dans le plan d'exécution. C'est la même table avec un ID différent
Publiez le détail de la table jointe (vue), il sera beaucoup plus simple de déterminer le problème