본문 바로가기

코딩, 엑셀

파이썬, in조건 잘라서 요청하기


DB가 분산되어 있을 때 한쪽에서 아이디 리스트를 구하고, 다른쪽 DB에서 아이디를 조건으로 또 다른 값을 구하려고 할 때 만약 아이디 리스트의 갯수가 엄청 많다면 (가령 3만개) 두번째 쿼리를 날릴때 고민이 됩니다. 하나씩 날리자니 쿼리를 3만번 호출해야하고, 그렇다고 3만개를 묶어서 하나의 스트링으로 in 조건으로 걸자니 메모리가 꽉 차서 수행을 할 수 없게 됩니다. 이럴때는 일정 갯수 단위로 (가령 1000개) 아이디를 잘라서 in 조건을 걸면 편리하게 수행할 수 있어요

 

    # 엄청 많은 건수의 데이터 조회를 해야할 때...
    index = 0
    totalcount = len(idlist)
    for i in idlist:
        index += 1
        id = i
        if (idstr!=""): idstr += ","
        idstr += str(id)

        # 1000개씩 잘라서 수행한다.
        if (index%1000 == 0 or index == totalcount) :
            # 수행한다.

 

별 내용은 아니지만 이렇게 잘라서 수행하면 수행속도도 무척 빠르고 DB에도 부담을 주지 않게 됩니다. 


Only I can change me life, no one can do it for me. – Carol Burnett