Как оптимизировать запросы с полностью определенными именами в t-sql? - PullRequest
0 голосов
/ 19 апреля 2010

Когда я звоню:

select * from Database.dbo.Table where NAME = 'cat'

Требуется:

200 мс

А когда я меняю базу данных на базу данных в Management Studio и вызываю ее без полного имени, это происходит гораздо быстрее:

select * from Table where NAME = 'cat'

Требуется:

17 мс

Есть ли способ ускорить выполнение полностью определенных запросов без изменения базы данных?

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

Оказалось, что решением было изменить значение Auto Close в этой базе данных на false.

0 голосов
/ 19 апреля 2010

Скорее всего, разница в том, что студия открывает новое соединение с базой данных. Чтобы обеспечить это - попробуйте поставить 2 полностью квалифицированных оператора SQL - вы должны увидеть разницу только для первого. Второй должен работать в том же соединении

0 голосов
/ 19 апреля 2010

Учитывая, что эти два раза , поэтому отличаются, это может быть просто быстрее во второй раз, потому что SQL кэшировал план запроса с первого запуска. Вы управляли этими двумя сразу после друг друга? Даже тот же самый запрос, в котором ничего не изменилось, будет выполняться намного быстрее при втором запуске.

Если вы хотите получить точное время выполнения запросов, вам нужно заставить SQL забыть планы запросов, которые он кэшировал после каждого запуска. Я думаю, перезапуск SQL - один из способов сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...