Вопросы с тегом «execution-plan»

Стратегия, выбранная оптимизатором запросов для обработки запроса.

1
Почему выполнение удаления моего многораздельного представления приводит к вставке кластерного индекса?
У меня есть разделенное представление, которое имеет ниже триггер вставки (плохой раздел man). Когда я выполняю DELETE, я получаю следующий план запроса: delete from factproductprice where pricedate = '20170725' Триггер на виде: ALTER TRIGGER [dbo].[factProductPriceDelete] ON [dbo].[FactProductPrice] INSTEAD OF DELETE AS BEGIN IF @@ROWCOUNT = 0 RETURN; DECLARE @PriceDate DATE …

1
Статистика по индексу по разделам не используется в запросе по всей таблице
Следующее объединение имеет очень разные оценки строк при объединении разделов по сравнению с объединением всей таблицы: CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); …

1
Постоянный вычисляемый столбец, вызывающий сканирование
Преобразование обычного столбца в постоянный вычисляемый столбец приводит к тому, что этот запрос не может выполнять поиск индекса. Почему? Протестировано на нескольких версиях SQL Server, включая 2016 SP1 CU1. Repros С вычисляемым столбцом С обычной колонкой Беда в том , с table1, col7. Таблицы и запросы являются частичной (и упрощенной) …

3
План выполнения НЕ использует INDEX, он использует сканирование таблицы
Я знаю, что когда дело доходит до использования индекса или сканирования таблицы, SQL Server использует статистику, чтобы определить, какая из них лучше. У меня есть таблица с 20 миллионами строк. У меня есть индекс (SnapshotKey, Measure) и этот запрос: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group …

2
Почему ТОП операция в плане выполнения SQL
Пройдя некоторое время, я решил опубликовать этот вопрос из-за отсутствия ответа и извиниться, если есть аналогичный вопрос / ответ. При выполнении запроса ниже на двух одинаково настроенных серверах SQL мы сталкиваемся с разными планами выполнения, которые влияют на производительность, и нам нужна помощь в выяснении причины. Запрос: SELECT process_id INTO …

1
Почему план выполнения запроса SELECT COUNT () включает левую объединенную таблицу?
В SQL Server 2012 у меня есть табличная функция с соединением с другой таблицей, мне нужно подсчитать количество строк для этой «табличной функции». Когда я проверяю план выполнения, я вижу левую таблицу соединений. Почему? Как левая объединенная таблица может влиять на количество возвращаемых строк? Я ожидаю, что движку БД не …

3
Много «FETCH API_CURSOR0000…» на sp_WhoIsActive (SQL Server 2008 R2)
У меня странная ситуация. Используя sp_whoisactiveя могу видеть это: Хорошо, с помощью этого запроса я вижу, что вызывает (существует ли это слово на английском языке?): SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t результат: это просто select. Почему …

2
Простое УДАЛЕНИЕ, но сложный план выполнения
Когда я запускаю это удаление: DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870 ... удаляет 39 157 строк. Это должно быть просто, потому что это удаление по ETLHeaderID, который является кластеризованным индексом и первичным ключом. Но (согласно плану выполнения) кажется, что он набирает 361 190 строк и использует другие индексы. В …

1
SentryOne Plan Explorer считает число операций чтения в UDF?
У меня есть такой запрос: select dbo.fn_complexFunction(t.id) from mytable t В SQL Sentry Plan Explorer я заметил, что мне нужно запустить Get Estimated Plan, чтобы включить в план запроса UDF. При запуске «Получить фактический план» не похоже, что логические операции чтения и другие метрики включают операции, выполняемые в UDF. В …

2
Как я могу получить план выполнения для представления?
У меня есть схема с рядом просмотров. Мне нужно проверить планы выполнения, чтобы убедиться, что соответствующие индексы на месте и используются. Как мне это сделать? Я предпочел бы не нужно копировать и вставлять его из show create view <viewname>INTO explain, особенно некоторые мнения построены на вершине других взглядов , и …

2
Код создает другой план при запуске ad-hoc против хранимой процедуры
У меня есть оператор удаления, который использует неверный план при запуске внутри хранимой процедуры, но выбирает гораздо лучший план при запуске ad-hoc. Я перестроил все индексы для таблиц, используемых запросом, и удалил все кэши. Оптимизатор по-прежнему выбирает неправильный план для хранимой процедуры. Я хотел бы знать, почему оптимизатор использует другой …

2
Очень похожие запросы, очень разная производительность
У меня два очень похожих запроса Первый запрос: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' and a.TargetTypeId IN (1,2,3,4,5,6,7,8,9, 11,12,13,14,15,16,17,18,19, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39, 41,42,43,44,45,46,47,48,49, 51,52,53,54,55,56,57,58,59, 61,62,63,64,65,66,67,68,69, 71,72,73,74,75,76,77,78,79) Результат: 267479 План: https://www.brentozar.com/pastetheplan/?id=BJWTtILyS Второй запрос: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON …

1
«Предупреждения: операция вызвала остаточный ввод-вывод» в сравнении с поиском по ключевым словам
Я видел это предупреждение в планах выполнения SQL Server 2017: Предупреждения: Операция вызвала остаточный IO [sic]. Фактическое количество прочитанных строк было (3,321,318), но количество возвращенных строк было 40. Вот фрагмент из SQLSentry PlanExplorer: Чтобы улучшить код, я добавил некластеризованный индекс, чтобы SQL Server мог получить доступ к соответствующим строкам. Он …

2
Что вызывает высокую загрузку ЦП из этого плана запроса / выполнения?
У меня есть база данных SQL Azure, которая поддерживает приложение API .NET Core. Просмотр отчетов об обзоре производительности на портале Azure показывает, что большая часть нагрузки (использование DTU) на моем сервере базы данных поступает из ЦП, и один запрос специально: Как мы видим, запрос 3780 отвечает почти за все использование …

1
MERGE предотвращение блокировки
В одной из наших баз данных у нас есть таблица, к которой интенсивно одновременно обращается несколько потоков. Потоки обновляют или вставляют строки через MERGE. Есть также потоки, которые время от времени удаляют строки, поэтому данные таблицы очень изменчивы. Потоки, выполняющие upserts, иногда страдают от взаимоблокировки. Проблема выглядит аналогично описанной в …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.