커뮤니티

댓글 2

  • XML을 파싱하여 중간 단계의 PHP 자료구조(Rhymix\Framework\Parsers\DBQuery\Query 클래스의 인스턴스)를 생성한 후, 그것을 캐싱합니다.

     

    라이믹스/XE식 XML 쿼리에서는 어떤 파라미터를 넘기는지에 따라 각각의 파라미터의 값뿐 아니라 쿼리의 구조 자체가 달라질 수 있기 때문에, 완성된 SQL을 캐싱하는 것은 의미 없습니다. 예를 들어 where절에 들어갈 파라미터를 넘기지 않으면 해당 조건이 아예 빠져 버리고, join이나 group by를 할지 안 할지 컨트롤하는 파라미터도 있고, in (...) 조건에 배열을 넘긴다면 그 배열의 길이에 따라 바인딩할 파라미터의 갯수도 달라집니다.

     

    캐싱된 PHP 자료구조를 가지고 SQL을 찍어내는 것은 비교적 간단한 작업이기 때문에 (루프 돌면서 문자열 이어붙이는 수준?), 그 부분의 소요시간이 문제가 된 적은 없습니다. 새로운 기능을 추가할 때도 가능하면 XML 파싱 과정에서 많은 일을 하도록 만들고, SQL을 조합하는 과정에서는 복잡한 연산을 하지 않도록 합니다.

  • @기진곰

    말씀 감사합니다!