Почему вычисление плана выполнения занимает так много времени?

У меня есть проблема, когда перестроение или обновление статистики завершено для некоторых таблиц, после этого в первый раз, когда я запускаю свой запрос (выберите запрос), он выполняется слишком медленно, и длительность этого запроса составляет около 30 минут, но после этого, когда я запускаю опять продолжительность около 3 сек, как ее решить?

Я установил статистику ввода-вывода по запросу и получил следующие результаты:

--Второй раз

Стол 'таблица1'. Сканирование 42, логическое чтение 963118, физическое чтение 0, чтение с опережением 274, логическое чтение 1, физическое чтение 1, чтение с опережением 0.

--Первый раз

Стол 'таблица1'. Сканирование 42, логическое чтение 977019, физическое чтение 1143, чтение с опережением 946797, логическое чтение с лота 0, физическое чтение с лота 0, чтение с опережением чтения 0.

1 ответ

Почему вычисление плана выполнения занимает так много времени?

Как вы думаете, почему он рассчитывает план выполнения?

"Первый раз" читает с диска: read-ahead reads 946797,

Чтение с опережением при чтении может достигать 512 байт, поэтому 946 797 чтений с опережением при чтении за 30 минут - это в среднем 500 операций ввода-вывода в секунду и целых 260 МБ / с, то есть любой из них может достигать столько, сколько может обеспечить ваша система ввода-вывода. Таким образом, эти операции чтения с опережением могут составлять 30 минут выполнения.

Во второй раз данные почти все в памяти.

Другие вопросы по тегам