Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 需要帮助来改进T-SQL查询吗_Database_Sql Server 2008 - Fatal编程技术网

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

Database 需要帮助来改进T-SQL查询吗,database,sql-server-2008,Database,Sql Server 2008,我有一个包含大约3200万行的表。此表中有项id(非主键)和文本列 我要做的是将文本列与相同的项id连接起来。并在报告中使用 到目前为止,我们一直在使用来连接XML路径关键字。但我们的客户对延迟不满意 因此,我们尝试了COALESCE(我们尝试了描述的方法),但没有得到正确的结果(或者可能需要太长时间) 伙计们,若你们知道更好的方法和技巧,你们能帮我解决这个问题吗 谢谢…为项目id列添加索引 可能使用压缩数据作为字段而不是字符 使用一个表,该表的主键为item_id,字段为:last text

我有一个包含大约3200万行的表。此表中有
项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上进行级别转换。这将是最精简的,因为您不需要实际连接文本。尽管有更多的数据库-应用程序通信。(我假设有适当的索引,只选择使用的列。)