Wiele rzeczy może się dziać.
Po pierwsze, Ivan G. ma rację, że parametry połączenia i opcje SET mogą się różnić między SSMS a klientem ASP.NET. To jest coś, na co warto zwrócić uwagę w Profilerze, jeśli masz do niego dostęp.
Po drugie, jeśli wielokrotnie uruchamiasz zapytanie w SSMS, możliwe, że wyniki są buforowane i dlatego działa tak szybko w SSMS. Jeśli po pierwszym uruchomieniu SSMS działa wolno i próbujesz go uruchomić, ale potem przyspiesza, to znak, że trwa buforowanie.
Co do tego, dlaczego dodanie jednej dodatkowej klauzuli do sprzężenia może spowolnić działanie, trudno powiedzieć, dlaczego nie wiedząc więcej o stołach, ale nie jest wykluczone, że to mogło to zrobić. Czy istnieje indeks nad BATCH_INGR
? który zawiera zarówno FACTORY
i INGR_CODE
? Możesz go potrzebować teraz, gdy dołączasz INGR_CODE
w twoich warunkach przyłączenia.
Najlepszym sposobem, aby się tego dowiedzieć, jest spojrzenie na plan zapytań z INGR_CODE
i bez niego klauzuli i zobacz, czym się różni. Czy koszt jednego zapytania jest większy niż drugiego? Czy istnieją skany tabel tam, gdzie nie było ich wcześniej? Czy wyszukiwanie indeksu zamieniło się w skanowanie indeksu?