2013-03-13 2 views
1

아래쪽에 Order By 절이없는 00:00:00 초의 실행 시간을보고하는 왼쪽 결합 SQL 쿼리 (2012)가 있습니다. "Order By"를 추가하면 쿼리가 00:00:24 초가됩니다!SQL Server는 주문과 함께 왼쪽 BY :

정상입니까?

꽤 기본적인 개념을 여기에서 빠뜨린 것이 분명하지만 쿼리를 수행 한 다음 결과를 정렬한다고 가정합니다. 분명히 이것은 사실이 아닙니다, 제발 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?

조금 다른 정보 : 내가 합류하는 두 테이블에는 각각 약 35,000 개의 행과 22,000 개의 행이 있습니다. 날짜 범위를 선택하고 두 개의 문자열에서 왼쪽 조인이 발생했습니다. 결과 세트는 300 - 400 개의 결과입니다. 나는 문자열을 비교하는 엄중 한 처벌이 있다는 것을 알고 있으며, 나는 그것이 문제의 일부라고 추측하고 있습니다.

DECLARE @mystartdate as datetime 
SET @mystartdate = CAST(CAST((GETDATE() - 0) AS date) as nvarchar) + ' 06:00:00' 

DECLARE @myenddate as datetime 
SET @myenddate = CAST(CAST((GETDATE() + 1) AS date) as nvarchar) + ' 05:59:59' 

SELECT SUBSTRING(CAST([Event_Time] AS nvarchar),0,9) AS mytime 
,[CombinedDateTime] 
,[MediaFileName] 
,[Duration] 
,[High_Definition] 

FROM [dbo.schedules] 

LEFT JOIN dbo.subtitles 
ON REPLACE(SUBSTRING(dbo.subtitles.sub_filename, 1, LEN(dbo.subtitles.sub_filename) -4), '-', '') = REPLACE(dbo.schedules.MediaFileName,'/','') 

WHERE [CombinedDateTime] >= @mystartdate AND [CombinedDateTime] <= @myenddate 

Order by CombinedDateTime 

감사

+1

SQL을 게시 할 수 있습니까? –

+1

"이게 정상입니까?" 그것은 정말로 달려 있습니다. 'ORDER BY' 절은 무엇입니까? 관련된 데이터 유형은 무엇입니까? 쿼리를 지원할 수있는 인덱스가 있습니까? 분명히 그것은 데이터 양과는 아무런 관련이 없지만 원하는 순서에 따라 도입 된 정렬 작업입니다. 우리는 더 이상의 세부 사항 없이는 그것에 대해 언급 할 수 없다! –

+0

안녕하세요, SQL을 추가했습니다. 감사합니다. – pugu

답변

1

그것은 정상입니다 : 여기

는 SQL이다. SQL 및 ORDER BY 알고리즘을 사용하면 프로세서 및 기타 환경 요인에 따라 많은 레코드로 성능이 저하됩니다. 두 테이블을 하나의 뷰로 설정하면됩니다. 성능이 향상되면 미리 정의 된보기로 데이터를 컴파일하는지 확인하십시오.

은 또한 당신은

당신은 몇 가지가 등, 당신은 당신이 그것을 필요로하는 경우에, 실시간으로 데이터를 가져 빈도에 따라 데이터 스크립트에 자신의 테이블에 데이터를 프로그래밍 방식으로 변환과 결합하여 사용할 수 있습니다 연구 할 옵션 ...

+0

저는 지금 SQL의 일부를 중첩하려고 시도했지만 도움이되지 않았지만 지금은보기를 시도 할 것입니다. – pugu

+0

푸가, 성능이 향상되는지 알려주세요. 나는 너무 호기심이 많습니다. – ApolloSoftware

+1

당신 덕분에 고칠 수있을 것 같아요. 뷰를 생성하는 동안 열을 추가하고 문자열 표현식의 결과를 업데이트하여 대신 다음과 같이 비교했습니다. REPLACE (SUBSTRING (dbo.subtitles.sub_filename, 1, LEN (dbo.subtitles.sub_filename) -4), '-', '') dbo.subtitles_at_rbm.truncated_filename에 이미 일치하고 있었는데 이전 쿼리의 결과를 이미 넣었습니다. 조명이 빨라 졌을 것입니다. 비록 내가 날짜 열에서 문자열 작업이 반복적으로 일어나고 있다고하더라도 ... – pugu

2

ORDER BY 열/행에 대한 결과를 정렬하십시오. 주문한 모든 열에 인덱스를 설정하고 다시 시도하십시오. 그러면 도움이됩니다.