데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

SELECT 관련 쿼리 개선

mskiller 2013.01.18 10:29 Views : 7296

안녕하세요 쿼리를 만들다가 먼가 다른 방법이 있지 않을까 싶어서 질문해 봅니다.

 

PlayDataTemp가 있는데 여기에 각 계정에 대한 점수 정보가 들어 있습니다.  그리고 11111이란 계정에 대한 친구가 22222, 33333이라고 합니다. 그러면 친구에 대한 점수 정보를 얻기 위해서는 아래의 쿼리를 실행하면 되거든요.

 

SELECT * FROM PlayDataTemp WHERE Account_Id IN(22222, 33333)

 

친구 정보가 테이블에 있는 것이 아니라 파라미터로 받아야 하는 상황이라 위의 쿼리로 해야 하는데 그래서 만든 프로시저가 아래와 같습니다.

 

CREATE PROC [dbo].[USP_PLAY_TEMP]
@FriendList VARCHAR(1024)
AS 
BEGIN 
    SET NOCOUNT ON 

 DECLARE @Query NVARCHAR(1024)
      
    SET @Query = 'SELECT * FROM PlayDataTemp WHERE Account_Id IN '
    SET @Query = @Query + '(' + @FriendList + ')'
   
    EXECUTE SP_EXECUTESQL @Query
END


[USP_PLAY_TEMP] @FriendList='11111,22222'

 

위의 쿼리의 경우 미리 컴파일이 되지 않기 때문에 성능이 좀 떨어질 수 있을 것 같은데요.

 

다른 방법이 있을까요?

 

아래는 테이블을 만들고 데이터를 넣어주는 쿼리입니다.

 

CREATE TABLE [dbo].[PlayDataTemp](Account_Id BIGINT NOT NULL, Score INT NOT NULL);
GO
INSERT [dbo].[PlayDataTemp] (Account_Id, Score) VALUES (11111, 100);
INSERT [dbo].[PlayDataTemp] (Account_Id, Score) VALUES (22222, 200);
INSERT [dbo].[PlayDataTemp] (Account_Id, Score) VALUES (33333, 300);
INSERT [dbo].[PlayDataTemp] (Account_Id, Score) VALUES (44444, 400);
INSERT [dbo].[PlayDataTemp] (Account_Id, Score) VALUES (55555, 500);
GO
SELECT * FROM PlayDataTemp WHERE Account_Id IN(22222, 33333)

 

좋은 방법 있으면 부탁 좀 드리겠습니다.

No. Subject Author Date Views
6353 Web Edition 의 사용 범위에 대해 상세히 아시는 분 있을까요? [2] 쉼터지기 2013.01.22 6013
6352 SELECT 할때 컬럼을 변수로 담을 수 있나요?? [2] dcman 2013.01.22 6993
6351 PIVOT 함수 가르침좀 부탁드립니다 [1] 왕초보입니다 2013.01.22 6583
6350 mssql2008 64bit 제가 만든 확장프로시져가 로드가 안됩니다.ㅠㅠ [5] 블랙 2013.01.22 7189
6349 파일그룹에 관해서 궁금한점이 있습니다. [1] 왕기 2013.01.22 6284
6348 DB에 내용이 업데이트되면 클라이언트 측으로 서버푸시 [4] 하이페츠 2013.01.22 9560
6347 full-text검색관련 질문입니다. [1] niceman5 2013.01.21 8557
6346 이런것이 가능할까요?? [4] SQL왕왕초보 2013.01.21 6072
6345 질문드립니다... [2] 메칸더 2013.01.21 6068
6344 조언 부탁드립니다(복제한DB에관한...) [1] 문수정 2013.01.21 6186
6343 SSMS에서 주석처리 단축키가 뭔가요 ㅠ [2] 메칸더 2013.01.20 10374
6342 SQL 2008 Edition 에서 다른 Edition 으로의 데이터 복제시 에러가 발생하는지 알고 싶습니다. [2] 히니바라 2013.01.20 5807
6341 cursor로 sp를 작성했는데요 3건이있는데 한건만결과가 나오는이유를 모르겠슴니다 [1] 휘리릭 2013.01.18 6790
6340 안녕하세요 통계 쿼리작성에 대해서 문의 드립니다. [5] 쿼리의신되고파 2013.01.18 6391
6339 2005sql서버에서 2008서버로 업그레이 하고 서버를 옮겼습니다 [1] 민성 2013.01.18 6447
6338 select 문에서 특정 컬럼에서 특정횟수이상 나오는 것만 출력하는 방법은 없을까요? [2] satorare 2013.01.18 6775
6337 리소스 관리자(Resource Governor) 관련 질문입니다. [1] 수노 2013.01.18 8772
6336 [다시 질문]유니 코드 변환 방법 [3] 구본헌 2013.01.18 7237
» SELECT 관련 쿼리 개선 [1] mskiller 2013.01.18 7296
6334 시간비교 하는방법 뽀챙 2013.01.18 8055





XE Login