SELECT pe.prodtree_element_id prodID, pe.prodtree_element_name_s, li.line_name, av2.value FROM prodtree_element pe LEFT JOIN prodtree_link pl ON pe.prodtree_element_id = pl.to_prodtree_node_id LEFT JOIN line li ON pe.line_code = li.line_code INNER JOIN attribute_values av ON av.attribute_definition_id = #statusCode# LEFT JOIN attribute_values av2 ON pe.prodtree_element_id = av.prodtree_element_id WHERE pe.prodtree_element_func_type <> 'WIZARD' AND pe.prodtree_element_topo_type = 'NODE'
‘#statusCode#’ is a static id that matches an id in the attribute definition table (let’s say 22 for the sake of argument). The problem is, the query has some massive trouble finishing in any sane amount of time. The bigger problem is, I kinda need it to finish earlier, but the number of records is enormous that it has to draw back (around 30-50,000). I need data from multiple tables, which is where it starts to slow down. This is just a piece of what I need, I also need an entire other tables worth of data matching the current ‘prodtree_elment_id’.
I’m using ColdFusion but even running the query directly in SQL Server 2005 creates the 15-30+ minute wait for this query (if it even finishes). Is there any conceivable way to speed up this query to take at most 5 minutes or less?
This is the problem. There is a cross join between pe and av, followed by an outer join onto the cross join. You’re lucky it only takes 30 mins 🙂
I think you want this: