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#」は、属性定義テーブルの ID と一致する静的 ID です (引数のために 22 としましょう)。問題は、クエリがかなりの時間内に終了するという大きな問題を抱えていることです。より大きな問題は、もっと早く終了する必要があることですが、レコードの数が膨大であり、取り戻さなければなりません (約 30 ~ 50,000)。複数のテーブルからのデータが必要ですが、そこから速度が低下し始めます。これは必要なもののほんの一部です。現在の「prodtree_elment_id」に一致する他のテーブル全体のデータも必要です。
私は ColdFusion を使用していますが、SQL Server 2005 でクエリを直接実行しても、このクエリを 15 ~ 30 分以上待機します (終了したとしても)。このクエリを高速化して、最大 5 分以下にする方法は考えられますか?