Я написал запрос 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 занимает больше времени, если ячейка запрашивается с помощью? параметр, а не заданное значение? И почему небольшие запросы заканчиваются быстро, чуть большие - дольше, а "большие" - так долго?