У меня есть запрос, который истекает из-за большого размера таблицы (более 10 миллионов записей).sql server, return resultset before sql timeout
Создание новых индексов - это не вариант. Запрос выполняется на сервере sql и вызывается веб-узлом .net.
Есть ли способ вернуть результат до истечения таймаута.
select count(XYZ.A) from XYZ where XYZ.B = 'abc';
Что-то на линиях измерения прошедшего времени и возвращения результата непосредственно перед истечением времени запроса.
Thanks
Какие СУБД вы используете? Покажите нам свою структуру таблицы? – Kermit
У вас есть индексы на этих таблицах? Если у вас есть указатель на небольшом столбце с недействительным значением (например, 'INT' или' BIGINT'), тогда 'COUNT (*)' будет использовать этот столбец и, вполне возможно, ему придется читать ** намного меньше страницы данных ** для определения количества –
Если мы знаем, что вы хотите делать со всеми этими записями, мы можем сделать лучшую работу, помогая вам найти решение. Например, если в результатах не так много строк, вы выполняете сканирование таблицы, и простое изменение индекса может немедленно вернуть этот запрос. Если у вас много строк, возможно, изменение порядка результатов (то есть: опускать порядок полностью), или найти лучший способ отфильтровать их больше поможет. –