구현하고자 하는 건
- 특정 모듈 내에서
- url의 파라미터로 입력된 확장변수 값을 가지는 문서 목록을 기준으로
- 해당 문서들이 소속되어 있는 카테고리들의 1) 제목과 2) 문서갯수
를 가져오는 겁니다.
어렵게 어렵게ㅜ 다음과 같이 xml 쿼리를 짜긴 했는데요.
일단 원하는 작동이 구현되긴 합니다만, 딱 보기에도 너저분해서ㅠ
문법상 효율성에 무리가 있는지 봐주실 수 있을까요?
<query id="쿼리이름" action="select"> <tables> <table name="document_categories" alias="cate" /> </tables> <columns> <column name="cate.*" /> <query id="getCategoryDocumentCount" alias="document_count"> <tables> <table name="documents" alias="doc" /> </tables> <columns> <column name="count(*)" alias="count" /> </columns> <conditions> <condition operation="equal" column="doc.category_srl" default="cate.category_srl" /> <query operation="in" column="doc.document_srl" pipe="and"> <tables> <table name="document_extra_vars" alias="extra" /> </tables> <columns> <column name="extra.document_srl" /> </columns> <conditions> <condition operation="in" column="extra.module_srl" var="module_srl" notnull="notnull" pipe="and" /> <condition operation="in" column="extra.eid" var="var_ref" notnull="notnull" pipe="and" /> <condition operation="like_prefix" column="extra.value" var="var_ref_value" pipe="and" /> </conditions> </query> </conditions> </query> </columns> <conditions> <condition operation="equal" column="cate.module_srl" var="module_srl" filter="number" notnull="notnull" /> <query operation="in" column="cate.category_srl" pipe="and"> <tables> <table name="documents" alias="doc" /> </tables> <columns> <column name="doc.category_srl" /> </columns> <conditions> <query operation="in" column="doc.document_srl" pipe="and"> <tables> <table name="document_extra_vars" alias="extra" /> </tables> <columns> <column name="extra.document_srl" /> </columns> <conditions> <condition operation="in" column="extra.module_srl" var="module_srl" notnull="notnull" pipe="and" /> <condition operation="in" column="extra.eid" var="var_ref" notnull="notnull" pipe="and" /> <condition operation="like_prefix" column="extra.value" var="var_ref_value" pipe="and" /> </conditions> </query> </conditions> </query> </conditions> </query>
쿼리가 일단 condition에 해당되는 항목들은 대부분 index가 잡혀있어서 큰 문제는 없을 수 있으나 차라리 PHP에서 처리하는게 더 나을 수 있는 방식이 더 좋지 않을까 생각이 듣는데요..ㅎㅎ
그리고 해당 글수가 많아지면 많아질수록 count 전체갯수를 가져오는 쿼리는 상상이상으로 느려집니다. 그건 각오하셔요.