정태영

‘알 수도 있는 친구’ 페이지를 리프래쉬하다보니 과연 어떤 쿼리를 사용했을까가 궁금해졌다.

자 우선 기본적으로 ‘사람 정보’ 테이블이 다음과 같다고 하고…

person(pid, ‘이름’ )

‘친구 정보’ 테이블이 다음과 같다고 하면 (pid1: 어떤 사람의 pid, pid2: pid 를 가지는 사람의 친구)

relation(rid, pid1, pid2)

다음과 같은 쿼리면 되려나…

select pid2, count(pid2) as score from relation where pid1 IN (select pid2 from relation where pid1=’pid’) AND pid2 NOT IN (select pid2 from relation where pid1=’pid’) group by pid2 order by score desc;

자기 친구의 친구면서, 자기의 직접적인 친구는 아닌 사람들에 대해 얼마나 많은 (내 직접적인) 친구들이 그 사람을 함께 알고 있는 지 정보를 이용하여 정렬하기~! 정도?

왠지 테스트해보지도 않았고, 문법에 맞는지도 확실히 몰겠지만 왠지 될거 같다. 흐흣~!

찌질찌질…

조금 걸리는 건 똑같은 쿼리가 서브쿼리로 두 군데 들어갔다는 건데, 과연 쿼리 옵티마이져에서 저 둘을 같은 것으로 인식시켜줄까? 아니면 저 쿼리가 두 번 실행되는 걸까…

두 번 실행되는 거라면 저런 경우를 위해 사용되는 sql syntax 가 있으려나…

오랫만에 직업병…

Tags: , ,

This entry was posted on Friday, November 21st, 2008 at 2:06 am and is filed under MyLife. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply