랜덤하게 데이터 조회 NewID()

-- MSSQL 2010. 3. 22. 12:13
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
얼마전에 mysql 로 데이터조회시 랜덤하게 데이터를 뽑을 일이 있어서 그 방법을 글로 올렸었는데, 이번에는 MS-SQL 에서 같은 작업을 할 일이 생겼네요. 방법을 정렬시에 newid() 함수를 이용해서 정렬하는 겁니다.

SELECT     TOP 1 *
FROM       TEST
ORDER BY NEWID()

newid() 함수는 실행될 때마다 "CB86635F-C1CE-42FC-BDA0-7249A4068C18" 이런 서로 다른 값들을 반환합니다. 그러니까 테이블내의 모든 행에다가 이 값을 붙인 다음이 이 값들로 정렬해서 위에서 한개를 가져오는겁니다. 실행될때마다 다른 값들을 반환하므로 조회시마다 다를 행이 조회가 됩니다.

결과는 만족스럽습니다.
그런데 모든 행에 대해서 처리하므로 데이터량이 많아지면 상당히 느려질 것 같습니다.
실제로 4000개 정도의 행을 가지는 테이블에 테스트 해봐도 시간차가 느껴지네요.
역시 적절하게 사용해야 할것 같습니다.

출처 : http://cafe.naver.com/oznet.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=28

'-- MSSQL' 카테고리의 다른 글

튜닝을 위한 쿼리들  (0) 2010.03.22
동적쿼리에서 output parameter 사용  (0) 2010.03.22
DataLength()  (0) 2010.03.19
시작프로시저 만들고 관리하기  (0) 2010.03.19
MSDB 백업 및 복구  (0) 2010.03.19
posted by 어린왕자악꿍