현재 자료가 들어가는 태이블의 구조를 알려 드린다면
CREATE TABLE [dbo].[Image](
[iidx] [int] IDENTITY(1,1) NOT NULL,
[pidx] [int] NOT NULL,
[sidx] [int] NOT NULL,
[date] [datetime] NOT NULL,
CONSTRAINT [PK_Image] PRIMARY KEY CLUSTERED
(
[iidx] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[Image] WITH CHECK ADD CONSTRAINT [FK_Image_pidx] FOREIGN KEY([pidx]) REFERENCES [dbo].[ImagePath] ([pidx])
ALTER TABLE [dbo].[Image] CHECK CONSTRAINT [FK_Image_pidx]
이렇게 되어있습니다. 그리고 쿼리는
SELECT MAX([iidx]) AS [iidx], [sidx], CONVERT(CHAR(50), MAX([date]), 20) AS [date] FROM [Image] GROUP BY [sidx]
이렇게 사용합니다.
이것이 데이터가 20만개 정도 들어가면 0.2초대로 접어들게 되는데 좀 더 빠르게 최적화를 하고싶습니다.
인덱스를 좀 더 효율적이게 걸 수 있을지... 쿼리에서 더 최적화 할 수 있는 방법이 있을까요?
sidx값이 한두개라면 쿼리를 그룹 없이 두번 하는게 더 빠르겠지만 그렇지 않다 보니 그룹으로 하는게 더 빠르더군요.
한번의 쿼리로 해야 하는데.... 혹시 저 상태에서 더이상의 최적화는 불가능 한것일까요?
알려 주시면 감사하겠습니다. |