gpt4 book ai didi

sql - Sybase 性能问题 : INSERT SELECT

转载 作者:搜寻专家 更新时间:2023-10-30 23:46:01 25 4
gpt4 key购买 nike

我是 Sybase 的新手,我们在查询性能方面遇到了问题。希望有人能帮忙。

有问题的代码与此类似:

INSERT INTO #table    SELECT lt.id, rt.id    FROM local_table lt    JOIN remote_table rt ON rt.id = lt.id    WHERE ...

本地用户表和引用位于另一个数据库中的代理表的本地 View 之间存在连接。代理表正在连接到另一台服务器。查询基本上是连接本地和远程表并将结果插入到临时表中。

即使它将插入 0 条记录,查询也需要永远执行。

一些观察是:

  • 如果删除插入语句,SELECT 查询会执行得很快。
  • 如果我将语句转换为 SELECT INTO,查询运行正常。
  • 如果查询被分成两部分,(从远程表中插入选择,然后删除本地表中不存在的额外记录)查询运行正常。

是否可能有一个配置设置可以提高查询的性能,这样就不会更改代码?处理此问题的最佳方法是什么?

非常感谢您的帮助。非常感谢!

编辑:顺便说一句,在我们的跟踪中,它正在发出这种等待:

waiting for CTLIB event to complete

最佳答案

您应该遵循以下步骤:

  • 检查查询计划(设置 showplan on)并查看是否有意义

  • 对表和代理表运行更新统计信息,看看是否能提供更好的查询计划

  • 查看启用连接重定位是否提供更好的查询计划:在本地服务器中运行“sp_dboption yourdb, 'join relocation', true”,在远程服务器中运行“sp_dboption tempdb, 'ddl in tran', true”

  • 如果您需要查看与远程服务器的完整交互,请运行“dbcc traceon(11205)”,这会将交互记录在 ASE 错误日志中

完成这些步骤后,您至少应该更好地了解发生了什么以及为什么,如果没有解决问题。

关于sql - Sybase 性能问题 : INSERT SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28424373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com