일일 티켓 유효성 검증 (Unix datetime)의 3 천만 레코드 (한 달 값)를 조사해야하고 211 스테이션에 대해 1 시간 24 시간으로 나누어야합니다.3000 만 레코드. 그들을 24 시간 단위로 나누십시오. 1 개월 씩합시다. 린스 및 반복
먼저 내가 찾고있는 달을 선택하는보기를 만들었고 (장비 유형) 각 Unix datetime에 대해 Windows Datetime 값을 만듭니다.
SELECT TOP (100) PERCENT StationName AS Station, MainTable.UnixDateTime AS ValTime,
DATEADD(s, MainTable.UnixDateTime, CONVERT(DATETIME, '1970-01-01 00:00:00', 102)) AS WinTime
FROM MainTable
INNER JOIN StationName ON MainTable.StationID = StationName.StationID
WHERE (StationName.ValidStationCode = 32767) [use only valid stations]
AND (MainTable. UnixDateTime >= 1264996800)
AND (MainTable. UnixDateTime < 1267416000)
AND (MainTable.EquipmentCode IN (33, 36)) [examine only this equipment]
ORDER BY Station
난 후 한 시간 기간의 각각에 대해이보기에 SELECT 문을 사용하는 기본 절차를 실행합니다. 그것은 211 개의 각 스테이션에 대한 24 개의 선택 진술입니다.
예 1)
Update table Set [0102]= (select count(ValTime)
from view
where Station = @thisStation and DatePart (Hour, WinTime)>= 1 and DatePart (Hour, WinTime)< 2)
from view
where table.Station = @thisStation
예 2)
Update table Set [0203]= (select count(ValTime)
from view
where Station = @thisStation and DatePart (Hour, WinTime)>= 2 and DatePart (Hour, WinTime)< 3)
from view
where table.Station = @thisStation
등
절차는 작동 - 야호! ,
가 빠른이이 일을 더 나은 방법을
0001 0102 0203 0304...2324
Station1 27 34 567 231... 123
Station2 245 57 23 198... 21
etc.
출력 테이블이 25 열하지만 난 모르겠어요. :(
출력 예 우우 - 이 11 시간이 소요 (슈퍼 컴퓨터를 구입 하시겠습니까?) 순위 및 파티션에 대해 생각해 보았지만 어떻게 작동하는지 시각화 할 수 없었습니다. 전문가가 있습니까?
열을 작성하는 대신 기능 색인을 작성할 수 있습니다 (즉, oracle이 SQL Server를 호출하는 것으로 가정합니다) –