Вопросы с тегом «cardinality-estimates»

1
SQL Server 2014: есть ли какое-либо объяснение непоследовательной оценки количества участников самостоятельного объединения?
Рассмотрим следующий план запросов в SQL Server 2014: В плане запроса самосоединение ar.fId = ar.fIdдает оценку в 1 строку. Однако это логически противоречивая оценка: arсодержит 20,608строки и только одно отдельное значение fId(точно отраженное в статистике). Следовательно, это соединение создает полный перекрестный продукт строк ( ~424MMстрок), в результате чего запрос выполняется …

2
Почему функция LEN () сильно недооценивает количество элементов в SQL Server 2014?
У меня есть таблица со строковым столбцом и предикатом, который проверяет строки определенной длины. В SQL Server 2014 я вижу оценку в 1 строку независимо от длины, которую я проверяю. Это приводит к очень плохим планам, потому что на самом деле есть тысячи или даже миллионы строк, и SQL Server …

2
Почему подзапрос уменьшает оценку строки до 1?
Рассмотрим следующий надуманный, но простой запрос: SELECT ID , CASE WHEN ID <> 0 THEN (SELECT TOP 1 ID FROM X_OTHER_TABLE) ELSE (SELECT TOP 1 ID FROM X_OTHER_TABLE_2) END AS ID2 FROM X_HEAP; Я ожидаю, что окончательная оценка строки для этого запроса будет равна количеству строк в X_HEAPтаблице. Все, что …

2
Оценка мощности для оператора LIKE (локальные переменные)
У меня сложилось впечатление, что при использовании LIKEоператора во всех операциях оптимизации для неизвестных сценариев как устаревшие, так и новые CE используют оценку в 9% (при условии, что доступны соответствующие статистические данные и оптимизатору запросов не приходится прибегать к догадкам селективности). Выполняя приведенный ниже запрос к базе данных кредитов, я …

2
Почему оператор конкатенации оценивает меньше строк, чем его входные данные?
В следующем фрагменте плана запроса кажется очевидным, что Concatenationдолжна быть оценка строки для оператора ~4.3 billion rowsили сумма оценок строки для двух входных данных. Тем не менее, оценка ~238 million rowsпроизводится, что приводит к неоптимальным Sort/ Stream Aggregateстратегии , которая переливается сотни ГБ данных базе данных TempDb. Логически непротиворечивая оценка …

3
Почему эта оценка кардинальности соединения настолько велика?
Я испытываю невероятно высокую оценку количества элементов для следующего запроса: SELECT dm.PRIMARY_ID FROM ( SELECT COALESCE(d1.JOIN_ID, d2.JOIN_ID, d3.JOIN_ID) PRIMARY_ID FROM X_DRIVING_TABLE dt LEFT OUTER JOIN X_DETAIL_1 d1 ON dt.ID = d1.ID LEFT OUTER JOIN X_DETAIL_LINK lnk ON d1.LINK_ID = lnk.LINK_ID LEFT OUTER JOIN X_DETAIL_2 d2 ON dt.ID = d2.ID LEFT …

1
Предупреждение в плане запроса «Оценка мощности»
create table T(ID int identity primary key) insert into T default values insert into T default values go select cast(ID as varchar(10)) as ID from T where ID = 1 Запрос выше имеет предупреждение в плане запроса. <Warnings> <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" /> </Warnings> Почему у него есть предупреждение? Как …

1
Счетчик SQL Server 2014 (DISTINCT x) игнорирует вектор плотности статистики для столбца x
Для a, COUNT(DISTINCT)который имеет ~ 1 миллиард различных значений, я получаю план запроса с агрегатом хешей, который оценивается в ~ 3 миллиона строк. Почему это происходит? SQL Server 2012 дает хорошую оценку, так что это ошибка в SQL Server 2014, о которой я должен сообщить в Connect? Запрос и плохая …

1
Оценка мощности вне гистограммы
Настроить У меня возникли проблемы с пониманием оценки количества элементов. Вот моя тестовая установка: версия базы данных Stack Overflow 2010 года SQL Server 2017 CU15 + GDR (KB4505225) - 14.0.3192.2 новый CE (уровень совместимости 140) У меня есть этот процесс: USE StackOverflow2010; GO CREATE OR ALTER PROCEDURE #sp_PostsByCommentCount @CommentCount int …

1
Сортировать разливы в базу данных tempdb, но предполагаемые строки равны фактическим строкам
На SQL Server 2016 с пакетом обновления 2 (SP2) с максимальной памятью, установленной на 25 ГБ, у нас есть запрос, который выполняется примерно 80 раз в минуту. Запрос проливает около 4000 страниц в базу данных tempdb. Это приводит к большому количеству операций ввода-вывода на диске в базе данных tempdb. Когда …

1
Оценка мощности предикатов частично охватывающего диапазона
Сейчас я пытаюсь выяснить, как SQL Server оценивает количество предикатов диапазона, которые частично покрывают шаг гистограммы. В интернете, при значении статистики кардинальности для оценки внутри шага, я наткнулся на похожий вопрос, и Пол Уайт дал на него довольно интересный ответ. Согласно ответу Павла, формулы для оценки количества элементов для предикатов> …

2
Задача оценки мощности множества на внутреннем объединении
Я изо всех сил пытаюсь понять, почему оценка строк так ужасно неправильна, вот мой случай: Простое объединение - с использованием SQL Server 2016 sp2 (та же проблема, что и для sp1), dbcompatiblity = 130. select Amount_TransactionCurrency_id, CurrencyShareds.id from CurrencyShareds INNER JOIN annexes ON Amount_TransactionCurrency_id = CurrencyShareds.Id option (QUERYTRACEON 3604, QUERYTRACEON …

1
Изменения в оценках для предикатов, которые содержат SUBSTRING () в SQL Server 2016?
Существуют ли какие-либо документы или исследования об изменениях в SQL Server 2016 относительно оценки мощности множества предикатов, содержащих SUBSTRING () или другие строковые функции? Причина, по которой я спрашиваю, состоит в том, что я смотрел на запрос, производительность которого снизилась в режиме совместимости 130, и причина была связана с изменением …

1
Как оптимизатор SQL Server оценивает количество строк в объединенной таблице?
Я выполняю этот запрос в базе данных AdventureWorks2012 : SELECT s.SalesOrderID, d.CarrierTrackingNumber, d.ProductID, d.OrderQty FROM Sales.SalesOrderHeader s JOIN Sales.SalesOrderDetail d ON s.SalesOrderID = d.SalesOrderID WHERE s.CustomerID = 11077 Если я посмотрю на примерный план выполнения, я увижу следующее: Первоначальный поиск по индексу (вверху справа) использует индекс IX_SalesOrderHeader_CustomerID и осуществляет поиск …

3
Запрос в 100 раз медленнее в SQL Server 2014, оценка количества строк в буфере строк Оценка виновника?
У меня есть запрос, который выполняется в 800 миллисекунд в SQL Server 2012 и занимает около 170 секунд в SQL Server 2014 . Я думаю, что я сузил это до плохой оценки кардинальности для Row Count Spoolоператора. Я немного читал об операторах спула (например, здесь и здесь ), но все …

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