where 절에 사용 된 인덱싱 된 열에 특정 값이있는 경우 Azure SQL 쿼리가 느립니다.

Jagan Veeraraghavan

인스턴스 : Azure SQL S2 인스턴스 ~ 170 만 개의 레코드가있는 후보 테이블이 있습니다. 후보 테이블이 기본 키가 아닌 AccountID에 인덱싱됩니다. AccountID : 646에는 80K 행이 있고 AccountID : 10에는 365K 행이 있습니다.

non_pk_indexed_col = int 인 테이블에서 select top (10)을 실행하면

Select top(10) from candidates where accountid=10

쿼리는 00:00:00 시간으로 완료됩니다.

Select top(10) from candidates where accountid=646

, 쿼리가 완료된 시간 01:45:00입니다.

값이 다른데 동일한 쿼리에 시간이 오래 걸리는 이유

cbattlegear

이 두 매개 변수에 대해 매우 다른 쿼리 계획을 얻을 가능성이 높습니다. 따라서 하나는 다른 것보다 훨씬 더 잘 수행됩니다. 확인하는 한 가지 방법은 실제 실행 계획을 가져 와서 확인하는 것입니다.

SSMS에서 실제 실행 계획 포함 단추 (실행 단추 왼쪽에 약 7 개)를 눌러이를 수행 할 수 있습니다. https://msdn.microsoft.com/en-us/library/ms189562.aspx

Neil이 말했듯이 일반적으로 통계를 업데이트하여 잘못된 실행 계획을 수정합니다. 가능한 최상의 결과를 얻으려면 fullscan으로 업데이트해야합니다. 다음 쿼리를 실행하여 수행 할 수 있습니다.

DECLARE @sql nvarchar(MAX);
SELECT @sql = (SELECT 'UPDATE STATISTICS [' + DB_NAME() + '].[' + rtrim(sc.name) + '].[' + rtrim(so.name) + '] WITH FULLSCAN, ALL; '
from sys.sysobjects so
join sys.schemas sc
on so.uid = sc.schema_id
where so.xtype = 'U' 
               FOR XML PATH(''), TYPE).value('.', 'nvarchar(MAX)');
PRINT @sql
EXEC (@sql)

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

인덱싱 된 열에 대한 Postgresql 매우 느린 쿼리

분류에서Dev

where 절에 상관 된 하위 쿼리가있는 SQL 쿼리

분류에서Dev

Python Pandas Dataframe-인덱싱 된 날짜가 특정 날짜보다 오래된 경우 데이터 프레임에서 데이터 제거

분류에서Dev

특정 값이 설정된 경우에만 MySQL 쿼리의 특정 열을 업데이트합니다.

분류에서Dev

다중 값 필드에서 특별히 인덱싱 된 값 쿼리

분류에서Dev

두 개의 인덱싱 된 열에 대한 SQLite 쿼리가 그렇게 느린 이유는 무엇입니까?

분류에서Dev

SQL : where 절에서 미리 정의 된 목록 사용

분류에서Dev

특정 열이 SELECT 문에있을 때 쿼리가 매우 느립니다.

분류에서Dev

인덱싱 된 뷰를 쿼리하는 동안 WHERE 절 성능

분류에서Dev

Intarray 확장이 설치된 경우 Postgres는 정수 배열에 인덱스를 사용하지 않습니다.

분류에서Dev

인덱싱 된 열의 Postgresql ORDER BY가 느립니다.

분류에서Dev

인덱싱 된 열에 여러 OR 조건을 추가 한 후 느린 MySQL 쿼리

분류에서Dev

Where 절이 0 인 정수인 경우 SQL 쿼리가 값을 반환하는 이유는 무엇입니까?

분류에서Dev

Matlab : 'A'가 인덱싱 된 변수 인 경우 FIND 대신 논리적 인덱싱을 사용하여 성능을 향상시킬 수 있습니다.

분류에서Dev

조건이있는 SQL Where 절은 전달 된 값과 동일한 where 절을 설정하거나 전달 된 값이 null 인 경우 where 절을 "IS NULL"로 설정합니다.

분류에서Dev

테이블에 저장된 값에 대해 비트 연산을 수행하고 SQL 쿼리의 where 절에서 사용하는 방법은 무엇입니까?

분류에서Dev

데이터가 elasticsearch에 인덱싱 된 경우 원본 데이터를 삭제하는 것이 좋습니까?

분류에서Dev

특정 매개 변수 (MySQL)에 대해 SQL 쿼리가 매우 느립니다.

분류에서Dev

mysql의 인덱싱 된 열에 대한 간단한 where 조건이있는 나쁜 SQL 성능

분류에서Dev

WHERE 절에 값이없는 경우 다중 열 인덱스에서 열 순서가 중요합니까?

분류에서Dev

PHP MySQL WHERE 절에서 배열 된 확인란 값 사용

분류에서Dev

변수가 설정된 경우에만 WHERE 절

분류에서Dev

계산 된 열에 WHERE 절 사용 (서브 쿼리 포함)

분류에서Dev

다중 인덱싱 된 데이터 프레임에서 특정 수의 행 가져 오기

분류에서Dev

"WHERE"절에 NEWID ()가 포함 된 이상한 SQL Server (TSQL) 쿼리 결과

분류에서Dev

SQL 쿼리-특정 집계 열에 다른 조건 (Where 절?)을 적용하는 방법

분류에서Dev

다른 선택 쿼리에 대해 where 절의 쿼리에서 반환 된 값 사용

분류에서Dev

접두사 또는 마커가있는 쿼리 문자열이 포함 된 Blob Storage 용 Azure REST API 인 경우 403 가져 오기

분류에서Dev

값이있는 경우에만 WHERE 절로 조인 된 테이블에서 선택하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    인덱싱 된 열에 대한 Postgresql 매우 느린 쿼리

  2. 2

    where 절에 상관 된 하위 쿼리가있는 SQL 쿼리

  3. 3

    Python Pandas Dataframe-인덱싱 된 날짜가 특정 날짜보다 오래된 경우 데이터 프레임에서 데이터 제거

  4. 4

    특정 값이 설정된 경우에만 MySQL 쿼리의 특정 열을 업데이트합니다.

  5. 5

    다중 값 필드에서 특별히 인덱싱 된 값 쿼리

  6. 6

    두 개의 인덱싱 된 열에 대한 SQLite 쿼리가 그렇게 느린 이유는 무엇입니까?

  7. 7

    SQL : where 절에서 미리 정의 된 목록 사용

  8. 8

    특정 열이 SELECT 문에있을 때 쿼리가 매우 느립니다.

  9. 9

    인덱싱 된 뷰를 쿼리하는 동안 WHERE 절 성능

  10. 10

    Intarray 확장이 설치된 경우 Postgres는 정수 배열에 인덱스를 사용하지 않습니다.

  11. 11

    인덱싱 된 열의 Postgresql ORDER BY가 느립니다.

  12. 12

    인덱싱 된 열에 여러 OR 조건을 추가 한 후 느린 MySQL 쿼리

  13. 13

    Where 절이 0 인 정수인 경우 SQL 쿼리가 값을 반환하는 이유는 무엇입니까?

  14. 14

    Matlab : 'A'가 인덱싱 된 변수 인 경우 FIND 대신 논리적 인덱싱을 사용하여 성능을 향상시킬 수 있습니다.

  15. 15

    조건이있는 SQL Where 절은 전달 된 값과 동일한 where 절을 설정하거나 전달 된 값이 null 인 경우 where 절을 "IS NULL"로 설정합니다.

  16. 16

    테이블에 저장된 값에 대해 비트 연산을 수행하고 SQL 쿼리의 where 절에서 사용하는 방법은 무엇입니까?

  17. 17

    데이터가 elasticsearch에 인덱싱 된 경우 원본 데이터를 삭제하는 것이 좋습니까?

  18. 18

    특정 매개 변수 (MySQL)에 대해 SQL 쿼리가 매우 느립니다.

  19. 19

    mysql의 인덱싱 된 열에 대한 간단한 where 조건이있는 나쁜 SQL 성능

  20. 20

    WHERE 절에 값이없는 경우 다중 열 인덱스에서 열 순서가 중요합니까?

  21. 21

    PHP MySQL WHERE 절에서 배열 된 확인란 값 사용

  22. 22

    변수가 설정된 경우에만 WHERE 절

  23. 23

    계산 된 열에 WHERE 절 사용 (서브 쿼리 포함)

  24. 24

    다중 인덱싱 된 데이터 프레임에서 특정 수의 행 가져 오기

  25. 25

    "WHERE"절에 NEWID ()가 포함 된 이상한 SQL Server (TSQL) 쿼리 결과

  26. 26

    SQL 쿼리-특정 집계 열에 다른 조건 (Where 절?)을 적용하는 방법

  27. 27

    다른 선택 쿼리에 대해 where 절의 쿼리에서 반환 된 값 사용

  28. 28

    접두사 또는 마커가있는 쿼리 문자열이 포함 된 Blob Storage 용 Azure REST API 인 경우 403 가져 오기

  29. 29

    값이있는 경우에만 WHERE 절로 조인 된 테이블에서 선택하는 방법은 무엇입니까?

뜨겁다태그

보관