Database 需要帮助来改进T-SQL查询吗
我有一个包含大约3200万行的表。此表中有Database 需要帮助来改进T-SQL查询吗,database,sql-server-2008,Database,Sql Server 2008,我有一个包含大约3200万行的表。此表中有项id(非主键)和文本列 我要做的是将文本列与相同的项id连接起来。并在报告中使用 到目前为止,我们一直在使用来连接XML路径关键字。但我们的客户对延迟不满意 因此,我们尝试了COALESCE(我们尝试了描述的方法),但没有得到正确的结果(或者可能需要太长时间) 伙计们,若你们知道更好的方法和技巧,你们能帮我解决这个问题吗 谢谢…为项目id列添加索引 可能使用压缩数据作为字段而不是字符 使用一个表,该表的主键为item_id,字段为:last text
项id
(非主键)和文本列
我要做的是将文本列与相同的项id
连接起来。并在报告中使用
到目前为止,我们一直在使用来连接XML路径
关键字。但我们的客户对延迟不满意
因此,我们尝试了COALESCE(我们尝试了描述的方法),但没有得到正确的结果(或者可能需要太长时间)
伙计们,若你们知道更好的方法和技巧,你们能帮我解决这个问题吗
谢谢…为项目id列添加索引
- 可能使用压缩数据作为字段而不是字符
- 使用一个表,该表的主键为item_id,字段为:last text id,并将文本从第一个id连接到最后一个id。以增量方式更新此表。应该更快。花费双倍的空间
- 为属于where的字段创建索引
- 不要使用笛卡尔乘法,而是使用联接(如果在查询中使用笛卡尔乘法)
- 在where子句中,首先放置更快、可能性更小的逻辑操作数。例如,如果A和B都为真,那么A和B都为真,那么如果A都为假,那么B根本不会被计算出来,你会赢得很多时间。这可能是进行成千上万次逻辑检查与不进行逻辑检查的区别,因此,这当然是一种优化
- 执行所有这些操作:
我希望这能有所帮助。您应该发布您正在尝试的两个查询。。(
对于XML路径
1和合并
1)项id列是否已索引?字符串连接速度较慢。搜索字符串和解析字符串也是如此。事情就是这样。我会推动重新格式化报告,或者选择更少的行或缓存策略。同时,我也忘了这个表是由ERP软件生成和填充的,所以我没有太多的控制权@MikeChristensen你可以看看我给你的链接,它几乎是sameI对天真方法的好奇:在代码中完成:按项目的顺序,timest;在项目_id上进行级别转换。这将是最精简的,因为您不需要实际连接文本。尽管有更多的数据库-应用程序通信。(我假设有适当的索引,只选择使用的列。)