需要帮助来改进T-SQL查询

时间:2011-12-01 16:19:15

标签: database sql-server-2008

我有一个包含大约3200万行的表。在此表中,有item_id(非主键)和文本列。

我想要做的是将文本列与相同的item_id连接起来。并在报告中使用它。

到目前为止,我们一直在使用FOR XML PATH关键字进行连接。但我们的客户对延迟并不满意。

所以我们尝试了COALESCE(我们尝试了here所描述的方法)我们没有得到正确的结果(或者可能需要太长时间)

所以大家,如果你知道更好的方法,技术可以帮助我解决这个问题吗?

...谢谢

3 个答案:

答案 0 :(得分:0)

item_id 列添加索引。

答案 1 :(得分:0)

  • 也许使用压缩数据作为字段而不是字符。
  • 使用带有item_id作为主键的表作为字段:last text id,以及从第一个id到最后一个id的连接文本。更新此表增量。应该更快。成本翻倍。

答案 2 :(得分:0)

做所有这些:

  1. 为您所在的字段创建索引。

  2. 而不是使用Descartes乘法使用连接(如果在查询中使用Descartes乘法)。

  3. 在你的where子句中,首先放置更快,更不可能的逻辑操作数。例如,如果A和B都为真,如果两者都为真,那么如果A为假,则根本不计算B并且你赢了很多时间。这可能与进行数十万次逻辑检查或不执行此操作有所不同,因此,这当然是一种优化。

  4. 我希望这会有所帮助。