쿼리는 다음과 같습니다. (현재, input 필드에만 index가 걸린 상태 입니다.)
(select
max(t1.input) input,
t1.floor floor,
t1.app_id app_id,
t1.batt_state state
from
(select
app_id,
floor,
input,
batt_state
from
tb_stat_real
where
(input >= convert(char(6), getdate(), 12))
and (input < convert(char(6), getdate()+1, 12))) t1
group by t1.floor, t1.app_id, t1.batt_state)
쿼리를 실행 하면 결과는 다음과 같이 나옵니다.
-----------------------------------------------
input floor app_id state
-----------------------------------------------
2010-01-13 15:57:50.203 1 1 1
2010-01-13 15:59:49.220 1 1 2
2010-01-13 16:00:48.717 1 1 3
2010-01-13 16:43:06.980 1 1 4
2010-01-13 16:00:49.213 1 2 1
2010-01-13 16:43:07.027 1 2 2
2010-01-13 15:58:50.207 1 2 3
2010-01-13 15:47:55.703 1 2 4
2010-01-13 15:57:51.207 1 3 1
2010-01-13 15:59:50.220 1 3 2
2010-01-13 16:43:07.037 1 3 3
2010-01-13 16:00:49.713 1 3 4
2010-01-13 16:00:50.213 1 4 1
2010-01-13 16:43:07.040 1 4 2
2010-01-13 15:46:57.200 1 4 3
2010-01-13 15:58:51.207 1 4 4
2010-01-13 15:58:51.707 1 5 1
2010-01-13 16:43:07.173 1 5 2
2010-01-13 16:00:50.713 1 5 3
...
...
...
2010-01-13 15:57:37.750 2 120 1
2010-01-13 15:59:38.803 2 120 2
2010-01-13 16:00:39.320 2 120 3
2010-01-13 15:58:38.300 2 120 4
2010-01-13 15:58:38.800 2 121 1
2010-01-13 15:54:36.703 2 121 2
2010-01-13 16:00:39.820 2 121 3
2010-01-13 15:57:38.250 2 121 4
...
...
...
2010-01-13 15:58:30.360 3 241 1
2010-01-13 16:01:10.890 3 241 2
2010-01-13 16:00:17.383 3 241 3
2010-01-13 15:59:23.877 3 241 4
2010-01-13 15:58:30.860 3 242 1
2010-01-13 16:01:11.393 3 242 2
2010-01-13 16:00:17.883 3 242 3
2010-01-13 15:59:24.377 3 242 4
...
...
...
위의 색칠한 부분만 나오도록
위의 쿼리에 추가 작업 내지 혹은 다른 쿼리 좀
작성해 주실수 있는지요?
제가 쿼리를 조인해서 구해볼려고 했는데, input 필드에 index가 걸린 상태인데,
이미 max(input)를 한 관계로, index가 풀려서, 조인하여 쿼리를 수행한 경우
결과 값이 너무 느리게 나옵니다. (실은 결과 나오는지 확인 못했음)
|