Witam,

Napisałem zapytanie, które łączy ze sobą 20 tabel. Po uruchomieniu programu SQL Server Management Studio Express zapytanie za pierwszym razem wykonuje się 6 sekund, ponowne jego wykonanie trwa już jednak poniżej sekundy (nawet jeśli zmienię warunki w WHERE).

Napisałem prostą aplikację w PHP w której umieściłem to zapytanie. Jednak każde wykonanie tego zapytania w mojej aplikacji trwa zawsze 6 sekund. Zapytanie nie jest nigdzie "zapamiętywane" - przeciwnie niż w programie SQL Server Management Studio Express, gdzie długo wykonuje się ono tylko za pierwszym razem.

Ciekawe jest to, że jeśli podłączę się do bazy przez program SQL Server Management Studio Express lub przez linie poleceń (sqlcmd) i zostawię połączenie otwarte, a następnie uruchomię moją aplikację PHP to wtedy wykonanie zapytania przez moją aplikacje trwa szybko - czyli wtedy zapytanie zapamiętuje się gdzieś.

Na chwilę obecną aby dało się używać mojej aplikacji PHP muszę z każdym uruchomieniem komputera odpalać sqlcmd i podłączać się do bazy i zostawiać otwarte połączenie na cały czas. Nie jest to jednak zbyt sensowne i nie wiem na ile bezpieczne.

Co może być przyczyną braku zapamiętywania zapytania wykonywanego przez moją aplikację PHP gdzieś w RAM, przez co ponowne jego wykonanie w przeciągu kilku sekund było znacznie szybsze?