【发布时间】:2010-12-17 06:24:09
【问题描述】:
我有一个页面,我在其中运行初始 SQL 查询以获取主题列表,然后循环此查询并为从原始主题查询返回的每条记录运行两个额外的查询(我恰好在ColdFusion,但不确定这真的很重要)。这两个额外的查询对该特定主题进行 COUNT 运算,然后输出结果(打印主题名称,然后是该主题的两个计数)。我正在尝试提高此页面的性能,并想知道是否可以以某种方式将其组合到一个查询中。
初始查询:
选择主题 ID,主题名称 来自主题 按主题名称订购初始查询循环内的查询:
选择 COUNT(test_ID) 作为 priority_count FROM 测试队列 WHERE priority_flag = 1 AND subject_ID = #SubjectQuery.subject_ID# 选择 COUNT(test_ID) 作为locked_count FROM 测试队列 WHERE 锁定 = 1 AND subject_ID = #SubjectQuery.subject_ID#关于如何优化这些的建议? DB 是 MS SQL 2008。谢谢。
【问题讨论】:
-
你如何根据subject_ID过滤Test_Queue,这里没有显示。
-
在循环中的查询中,WHERE 子句是否包含 subject_ID?
-
对不起,我删除了一些无关的信息,不小心把它拿出来了。我已经编辑了上面的查询。
-
提高性能的第一种方法是摆脱循环(如前所述)。其次,将子查询的性能与 CASE 选项进行比较。 (有些数据库使用 CASE 可能会做得更好。)但是 MS SQL 也可能会表现得很好。
标签: sql sql-server coldfusion count