«cardinality-estimates» 태그된 질문

1
SQL Server 2014 : 일관성없는 자체 조인 카디널리티 추정에 대한 설명이 있습니까?
SQL Server 2014에서 다음 쿼리 계획을 고려하십시오. 쿼리 계획에서 자체 조인 ar.fId = ar.fId은 1 행으로 추정됩니다. 그러나, 이것은 논리적으로 일관성이 추정은 다음과 같습니다 ar있다 20,608행의 한 별개의 값 fId(정확하게 통계에 반영을). 따라서이 조인은 행 ( ~424MM행) 의 전체 교차 곱을 생성하여 몇 시간 동안 쿼리를 실행합니다. SQL Server가 통계와 …

2
SQL Server 2014에서 LEN () 함수가 카디널리티를 과소 평가하는 이유는 무엇입니까?
문자열 열이있는 테이블과 특정 길이의 행을 검사하는 술어가 있습니다. SQL Server 2014에서 확인하는 길이에 관계없이 예상 1 행이 표시됩니다. 실제로 수천 또는 수백만 개의 행이 있고 SQL Server가이 테이블을 중첩 루프의 외부에 배치하도록 선택하기 때문에 계획이 매우 좋지 않습니다. SQL Server 2014의 카디널리티 예상 1.0003에 대한 설명이있는 반면 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 % 추정치를 사용 한다는 인상을 받았습니다 (관련 통계를 사용할 수 있고 쿼리 최적화 프로그램이 선택성 추측에 의존 할 필요가 없다고 가정). 신용 데이터베이스에 대해 아래 쿼리를 실행할 때 다른 CE에 따라 다른 추정치를 …

2
연결 연산자가 입력보다 적은 행을 추정하는 이유는 무엇입니까?
다음 쿼리 계획 스 니펫에서 Concatenation연산자 ~4.3 billion rows의 행 추정값은 두 입력에 대한 행 추정값의 합 이어야합니다 . 그러나 추정치 ~238 million rows가 산출되어 수백 GB의 데이터를 tempdb에 유출하는 차선책 Sort/ Stream Aggregate전략으로 이어집니다. 이 경우 논리적으로 일관된 견적은을 생성 Hash Aggregate하고 유출을 제거하며 쿼리 성능을 크게 향상 시켰습니다. …

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 …

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 COUNT (DISTINCT x)는 열 x에 대한 통계 밀도 벡터를 무시합니다.
A에 대한 COUNT(DISTINCT)갖는다 ~ 10 억 개 고유 값, 난 단지 ~ 300 만 행이있을 것으로 추정 해시 집계와 쿼리 계획을 얻고있다. 왜 이런 일이 발생합니까? SQL Server 2012는 적절한 견적을 제공하므로 SQL Server 2014의 버그로 Connect에 대해보고해야합니까? 쿼리와 잘못된 추정 -- Actual rows: 1,011,719,166 -- SQL 2012 estimated rows: …

1
히스토그램 외부의 카디널리티 추정
설정 카디널리티 예상을 이해하는 데 문제가 있습니다. 테스트 설정은 다음과 같습니다. 2010 버전의 스택 오버플로 데이터베이스 SQL Server 2017 CU15 + GDR (KB4505225)-14.0.3192.2 새로운 CE (호환성 수준 140) 이 proc이 있습니다. USE StackOverflow2010; GO CREATE OR ALTER PROCEDURE #sp_PostsByCommentCount @CommentCount int AS BEGIN SELECT * FROM dbo.Posts p WHERE p.CommentCount …

1
유출을 tempdb로 정렬하지만 예상 행은 실제 행과 같습니다.
최대 메모리가 25GB로 설정된 SQL Server 2016 SP2에는 분당 약 80 회 실행되는 쿼리가 있습니다. 쿼리는 약 4000 페이지를 tempdb에 흘립니다. 이로 인해 tempdb 디스크에 많은 IO가 발생합니다. 당신이 한 번 봐 걸릴 때 쿼리 계획을 (간체 쿼리)는 추정 된 행의 수는 실제 행의 수와 동일한 것으로 볼 수 있지만 …

1
범위 술어를 부분적으로 포함하는 경도 측정
현재 SQL Server가 히스토그램 단계를 부분적으로 다루는 범위 술어의 카디널리티를 평가하는 방법을 알아 내려고합니다. 인터넷에서 카디널리티 추정 및 단계별 통계 값 에서 비슷한 질문을 보았으며 Paul White는 그것에 대해 다소 흥미로운 답변을하였습니다. Paul의 대답에 따르면, 술어에 대한 카디널리티 추정 공식> = 및> (이 경우 120 이상의 카디널리티 추정기 모델에만 관심이 …

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 2363); SQL은 1 행을 추정하지만 107131이며 중첩 루프를 수행하도록 선택합니다 ( …

1
SQL Server 2016에서 SUBSTRING ()이 포함 된 조건 자에 대한 추정치가 변경 되었습니까?
SUBSTRING () 또는 다른 문자열 함수를 포함하는 술어의 카디널리티 추정 방법에 대한 SQL Server 2016의 변경 사항에 대한 문서 나 연구가 있습니까? 내가 묻는 이유는 호환성 모드 130에서 성능이 저하 된 쿼리를보고 있었고 그 이유는 SUBSTRING ()에 대한 호출이 포함 된 WHERE 절과 일치하는 행 수의 추정치 변경과 관련이 있기 …

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 색인을 사용하고 리터럴 11077을 검색합니다. 추정치는 2.6192 행입니다. 를 사용 DBCC SHOW_STATISTICS …

3
SQL Server 2014에서 쿼리 속도가 100 배 느리면 행 수 스풀 행이 원인을 추정합니까?
SQL Server 2012 에서 800 밀리 초로 실행 되고 SQL Server 2014에서 약 170 초가 걸리는 쿼리가 있습니다. 나는 이것을 Row Count Spool운영자 의 열악한 카디널리티 추정치로 좁혔다 고 생각합니다 . 스풀 연산자 (예 : here 및 here ) 에 대해 약간 읽었 지만 여전히 몇 가지 사항을 이해하는 데 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.