我是Sybase的新手,我们在查询性能方面遇到了麻烦。希望有人可以提供帮助。
有问题的代码与此相似:
INSERT INTO #table SELECT lt.id, rt.id FROM local_table lt JOIN remote_table rt ON rt.id = lt.id WHERE ...
本地用户表和本地视图之间存在连接,该连接引用位于另一个数据库中的代理表。代理表正在连接到另一台服务器。该查询基本上是连接本地和远程表,并将结果插入临时表。
即使它会插入0条记录,查询也会永远执行。
一些观察结果是:
是否可能有一个配置设置可以提高此类查询的性能,因此不会有代码更改?处理这个问题的最佳方法是什么?
我会感激你的帮助。非常感谢你!
编辑顺便说一句,在我们的跟踪上发出这种等待:
等待CTLIB事件完成
答案 0 :(得分:1)
您应该按照以下步骤操作:
查看查询计划(设置showplan on)并查看是否有意义
在表和代理表上运行update statistics并查看是否提供了更好的查询计划
查看启用联接重定位是否提供了更好的查询计划:运行" sp_dboption yourdb,'加入重定位',true"在本地服务器和" sp_dboption tempdb,' ddl in tran',true"在远程服务器
如果您需要查看与远程服务器的完整交互,请运行" dbcc traceon(11205)",这将在ASE错误日志中记录交互
在完成这些步骤后,您至少应该更好地了解发生了什么以及为什么,如果没有解决问题。