SQL-запрос в Excel занимает гораздо больше времени при использовании? получить значение ячейки, чем значение, указанное в запросе - PullRequest
0 голосов
/ 01 сентября 2011

Я написал запрос Excel к базе данных SQL Server для отображения результатов в сложном представлении. Представление использует объединение нескольких таблиц с записями менее 10 КБ, возвращает около 620 строк и занимает 1-4 секунды для выполнения. Всегда. Добавьте предложение WHERE, чтобы ограничить искомый идентификатор конкретным значением, и оно выбирает от 1 до 100 строк, в зависимости от искомого идентификатора, и всегда выполняется менее чем за 1 секунду.

Однако измените предложение WHERE, чтобы использовать ID =?, И укажите его в ячейке. Теперь выполнение запроса занимает 5-30 секунд, если выбрано менее 30 строк, 2-4 минуты, если выбрано 30-50 строк, 10-15 минут, если выбрано 70-100 строк, и время ожидания, если их больше. Эти времена соответствуют.

Почему запрос Excel занимает больше времени, если ячейка запрашивается с помощью? параметр, а не заданное значение? И почему небольшие запросы заканчиваются быстро, чуть большие - дольше, а "большие" - так долго?

1 Ответ

1 голос
/ 23 октября 2013

Это может быть проблемой «перехвата параметров». Попробуйте включить строку:

OPTION (RECOMPILE)

в конце вашего запроса SQL.

Здесь есть статья, объясняющая, что такое сниффинг параметров: http://blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx

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