Hello all,
I'm using the Taxonomy: term ID argument as a view argument, and I'm passing to it a list of about 20 term IDs (it changes from page to page).
The result is a huge query that chokes the MySQL server, and drops the site down. The query is pasted further down this mail.
After manually changing the query to use IN(tid, tid2, tid3...), and getting rid of many LEFT JOINS, the query ran without any problem, and quite fast.
I'd appreciate pointers to issues regarding this problem, if you know of any...
And for the curious ones, take a look at the query:
BRFORE
SELECT DISTINCT(node.nid), node.title AS node_title, node.changed AS node_changed FROM node node
LEFT JOIN content_type_library_item node_data_field_in_library ON node.vid = node_data_field_in_library.vid
LEFT JOIN term_node term_node ON node.nid = term_node.nid LEFT JOIN term_hierarchy term_hierarchy ON term_node.tid = term_hierarchy.tid LEFT JOIN term_node term_node2 ON node.nid = term_node2.nid LEFT JOIN term_hierarchy term_hierarchy2 ON term_node2.tid = term_hierarchy2.tid LEFT JOIN term_node term_node3 ON node.nid = term_node3.nid LEFT JOIN term_hierarchy term_hierarchy3 ON term_node3.tid = term_hierarchy3.tid LEFT JOIN term_node term_node4 ON node.nid = term_node4.nid LEFT JOIN term_hierarchy term_hierarchy4 ON term_node4.tid = term_hierarchy4.tid LEFT JOIN term_node term_node5 ON node.nid = term_node5.nid LEFT JOIN term_hierarchy term_hierarchy5 ON term_node5.tid = term_hierarchy5.tid LEFT JOIN term_node term_node6 ON node.nid = term_node6.nid LEFT JOIN term_hierarchy term_hierarchy6 ON term_node6.tid = term_hierarchy6.tid LEFT JOIN term_node term_node7 ON node.nid = term_node7.nid LEFT JOIN term_hierarchy term_hierarchy7 ON term_node7.tid = term_hierarchy7.tid LEFT JOIN term_node term_node8 ON node.nid = term_node8.nid LEFT JOIN term_hierarchy term_hierarchy8 ON term_node8.tid = term_hierarchy8.tid LEFT JOIN term_node term_node9 ON node.nid = term_node9.nid LEFT JOIN term_hierarchy term_hierarchy9 ON term_node9.tid = term_hierarchy9.tid LEFT JOIN term_node term_node10 ON node.nid = term_node10.nid LEFT JOIN term_hierarchy term_hierarchy10 ON term_node10.tid = term_hierarchy10.tid LEFT JOIN term_node term_node11 ON node.nid = term_node11.nid LEFT JOIN term_hierarchy term_hierarchy11 ON term_node11.tid = term_hierarchy11.tid LEFT JOIN term_node term_node12 ON node.nid = term_node12.nid LEFT JOIN term_hierarchy term_hierarchy12 ON term_node12.tid = term_hierarchy12.tid LEFT JOIN term_node term_node13 ON node.nid = term_node13.nid LEFT JOIN term_hierarchy term_hierarchy13 ON term_node13.tid = term_hierarchy13.tid LEFT JOIN term_node term_node14 ON node.nid = term_node14.nid LEFT JOIN term_hierarchy term_hierarchy14 ON term_node14.tid = term_hierarchy14.tid LEFT JOIN term_node term_node15 ON node.nid = term_node15.nid LEFT JOIN term_hierarchy term_hierarchy15 ON term_node15.tid = term_hierarchy15.tid LEFT JOIN term_node term_node16 ON node.nid = term_node16.nid LEFT JOIN term_hierarchy term_hierarchy16 ON term_node16.tid = term_hierarchy16.tid LEFT JOIN term_node term_node17 ON node.nid = term_node17.nid LEFT JOIN term_hierarchy term_hierarchy17 ON term_node17.tid = term_hierarchy17.tid LEFT JOIN term_node term_node18 ON node.nid = term_node18.nid LEFT JOIN term_hierarchy term_hierarchy18 ON term_node18.tid = term_hierarchy18.tid LEFT JOIN term_node term_node19 ON node.nid = term_node19.nid LEFT JOIN term_hierarchy term_hierarchy19 ON term_node19.tid = term_hierarchy19.tid
WHERE (node_data_field_in_library.field_in_library_nid = 2045) AND (term_node.tid = '216') AND (term_node2.tid = '24') AND (term_node3.tid =
'10') AND (term_node4.tid = '148') AND (term_node5.tid = '25') AND (term_node6.tid = '139') AND (term_node7.tid = '11') AND (term_node8.tid = '14') AND (term_node9.tid = '175') AND (term_node10.tid = '212') AND (term_node11.tid = '213') AND (term_node12.tid = '214') AND (term_node13.tid = '30') AND (term_node14.tid = '33') AND (term_node15.tid = '35') AND (term_node16.tid = '18') AND (term_node17.tid = '20') AND (term_node18.tid = '3') AND (term_node19.tid = '2') GROUP BY node.nid, node_title ORDER BY node_title ASC LIMIT 0, 50;
AFTER
SELECT DISTINCT(node.nid), node.title AS node_title, node.changed AS node_changed FROM node node
LEFT JOIN content_type_library_item node_data_field_in_library ON node.vid = node_data_field_in_library.vid
LEFT JOIN term_node term_node ON node.nid = term_node.nid
LEFT JOIN term_hierarchy term_hierarchy ON term_node.tid = term_hierarchy.tid
WHERE (node_data_field_in_library.field_in_library_nid = 2045)
AND term_node.tid IN ('216','24','10','148','25','139','11','14','175','212','213','214','30','33','35','18','20','3','2')
GROUP BY node.nid, node_title ORDER BY node_title ASC LIMIT 0, 50;