Назад | Перейти на главную страницу

Выберите отдельные / уникальные строки из огромной таблицы в SQL Server без ошибок тайм-аута

У меня есть таблица в SQL Server примерно с 400 000 строк. К сожалению, в этой таблице много повторяющихся строк, так как нет первичного ключа. я использую SELECT DISTINCT чтобы получить все уникальные строки, но поскольку их так много, я продолжаю получать ошибки тайм-аута. Как лучше всего подойти к этой проблеме?

Хороший вопрос. Улучшить тайм-аут - поднять значение. Или добавьте больше мощности. Технически 400 000 строк - это немного, так что для приличного сервера это будет очень быстро. В противном случае - если у вас проблемы с вводом-выводом из-за того, что на вашем «сервере» только один (пара) жестких дисков .... тогда ваш ввод-вывод убьет вас.

По сути, DISTINCT инициирует создание временного результата в базе данных tempdb, поэтому она является тяжелой для базы данных tempdb.

Но в конце я бы увеличил таймаут, особенно если это единовременная операция.

Кстати, чтобы представить это в перспективе - где вы говорите о большом столе? 400.000 - это банально по размеру.

Лучшее решение для ускорения этого - добавить индекс в поле, которое вам нужно выбрать. Использование оператора select, в котором ядро ​​базы данных должно фильтровать результаты без индекса, по существу требует, чтобы сервер прошел по каждой строке в таблице.