문제

인덱스 최적화 연습(읽기:인터뷰 질문)으로 SQL2005의 표준 AdventureWorks 데이터베이스에서 느린 쿼리가 필요합니다.제가 시도한 모든 쿼리는 약 1초가 소요되며 효과적으로 최적화할 수 있도록 몇 초가 걸리는 쿼리를 선호합니다.

여기 누구든지 그런 쿼리를 만들거나 느린 쿼리를 만드는 방법에 대한 조언을 줄 수 있나요?내 쿼리를 비효율적으로 만들 수는 없는 것 같습니다. :)

도움이 되었습니까?

해결책

다음은 행이 가장 많은 데이터베이스 테이블 목록입니다.

Tables - Rows count
Sales.SalesOrderDetail - 121317
Production.TransactionHistory - 113443
Production.TransactionHistoryArchive - 89253
Production.WorkOrder - 72591
Production.WorkOrderRouting - 67131
Sales.SalesOrderHeader - 31465
Sales.SalesOrderHeaderSalesReason - 27647
Person.Contact - 19972
Person.Address - 19614
Sales.CustomerAddress - 19220
Sales.Customer - 19185
Sales.ContactCreditCard - 19118
Sales.CreditCard - 19118
Sales.Individual - 18484
Sales.CurrencyRate - 13532

해당 테이블을 사용하여 다양한 변형을 시도해 볼 수 있습니다.예를 들어 다음 쿼리는 다음과 같습니다.

SELECT * FROM Sales.SalesOrderDetail s
INNER JOIN Production.Product p ON s.ProductID = p.ProductID

내 컴퓨터에서 9초 동안 실행됩니다.

당신은 할 수 있습니다 이것을 실행:

SELECT * FROM Production.TransactionHistory th
INNER JOIN Production.TransactionHistoryArchive tha ON th.Quantity = tha.Quantity

인덱싱되지 않은 테이블의 내부 조인.매우 인위적인 예이지만 지금은 내 컴퓨터에서 실행하는 데 2분 이상이 걸립니다.이제 20분 이상 남았습니다.지금 - 1시간 20분.

다른 팁

해당 테이블 중 하나 또는 커서에 상관 관계 서브 쿼리를 사용해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top