2010年9月8日

GAE subquery

最近有一個需求是檢查某一個清單成員是否位於另一個清單之中
原本的作法很直覺的使用一個迴圈跑GQL查詢where member IN somelist
做簡單測試的時候也沒什麼問題
但是跑實際資料的時候會發生
BadArgumentError: Cannot satisfy query -- too many subqueries (max: 30, got 390). 
Probable cause: too many IN/!= filters in query.
由於GQL實做不等式比對其實是跑多個subquery子查詢 然後把結果聯集在一起
但是從錯誤訊息看起來subquery的上限是30個, 在此情況也就是somelist最多只能有30個項目!
只能查30個能做什麼事情 拿來查是不是冠酉的相好都不夠了
不知道這個功能原本設計用來做什麼 還是我誤用了這個功能嗎