Почему вычисление плана выполнения занимает так много времени?
У меня есть проблема, когда перестроение или обновление статистики завершено для некоторых таблиц, после этого в первый раз, когда я запускаю свой запрос (выберите запрос), он выполняется слишком медленно, и длительность этого запроса составляет около 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 минут выполнения.
Во второй раз данные почти все в памяти.