Sites 및 ScannedItems 테이블이 두 개 있습니다. Sites에는 약 15000 개의 행이 있고 ScannedItems에는 약 6 천만 개의 행이 있습니다. 아래 쿼리는 CountUniqueRoleAssignments, Modified 및 siteid의 인덱스를 사용하여 약 6 분이 걸립니다. 어떤 식 으로든 최적화 할 수 있습니까? 어떤 종류의 조인이 하위 쿼리 또는 다른 힌트보다 빠릅니까?
select
*,
(select COUNT(*) from ScannedItems where ScannedItems.siteid=sites.siteid and ScannedItems.CountUniqueRoleAssignments>0) as CountUniquePermissions,
(select COUNT(*) from ScannedItems where ScannedItems.siteid=sites.siteid and ScannedItems.Modified<DATEADD (day, -30 ,GETDATE())) as CountNotModified30Days
from sites
- 답변 # 1
- 답변 # 2
당신은 사용할 수 있습니다
LEFT JOIN
다음과 같이 조건부 집계 :select S.siteid, COUNT(CASE WHEN SI.CountUniqueRoleAssignments > 0 THEN 1 END) as CountUniquePermissions, COUNT(CASE WHEN SI.Modified<DATEADD (day, -30 ,GETDATE()) THEN 1 END ) as CountNotModified30Days from sites S LEFT JOIN ScannedItems SI ON SI.siteid = S.siteid GROUP BY S.SITEID
관련 자료
- sql - rails 쿼리 - 특정 열에서 두 테이블을 조인하는 방법
- oracle - SQL 쿼리 성능을 향상시키는 방법
- PHP, MySQL, Zend에서 성능 쿼리 개선/최적화
- php - 3 조인으로 SQL 쿼리가 잘못되었습니다
- ruby on rails - ActiveRecord 쿼리 (포함 또는 조인)
- postgresql - postgres - 여러 개의 join이있는 하나의 쿼리와 여러 개의 쿼리
- MongoDB 쿼리 (범위 필터 + 정렬) 성능 조정
- powerbi - 여러 조인, 개수, 그룹화를 통한 SQL 쿼리 대 DAX (Power BI)
- sql - 여러 조인이 포함 된 쿼리의 유효성을 검사하는 방법
- c# - 면도기보기에서 linq 쿼리 사용시 성능 문제
- sql - 여러 조인 문을 줄이기위한 쿼리 최적화
- sql - 여러 내부 조인 및 하위 쿼리에 대한 쿼리 최적화
- sql - 쿼리 계획 - joins 순서가 중요합니까
- c# - 여러 조인 및 그룹이있는 Linq 쿼리
- Salesforce SQL (SOQL)의 JOINS를 포함하는 하위 쿼리에 대한 쿼리
- mysql - 로깅이 쿼리 성능에 영향을 미칩니 까?
- sql - Postgresql 용 Java 함수의 함수 매개 변수에서 쿼리 값을 전달하면 성능 차이가 있습니까?
- optimization - 사용자 이름을 통해 데이터 쿼리 - 쌍:최고의 성능
- mysql - 일대 다 조인을 사용하는이 쿼리에서 중복 값을 처리하는 방법과 group_concat을 사용할 때도 나타나는 이유는 무엇입니까?
아마도 조인을 사용하여이 쿼리를 작성할 것입니다.
위의 쿼리에는
WHERE
또는HAVING
그래서 나는 인덱스를 사용하여 그것을 더 조정하는 명백한 방법을 보지 못했습니다. 그러나 적어도 현재 쿼리와 관련되지 않은 잠재적 이점이 있습니다.N^2
select 절에서 상호 관련된 하위 쿼리와의 동작.