在我的项目中,我在同一台服务器上有两个独立的数据库。除了DB“B”中需要在DB“A”中访问的三列之外,DB是自给自足的。
如果我在A中有一个直接从B访问三列的存储过程,是否存在性能方面的考虑?
目前,我们运行一个夜间作业,将表B中所需的数据导入表A,这样存储过程就不会超出A的范围。
这是最好的方法吗?
跨数据库存储过程是否在最佳实践中?
答案 0 :(得分:5)
由于数据库位于同一台服务器上,因此应该没有问题。通常在使用链接服务器执行此操作时会出现问题,并且可能会遇到网络延迟
答案 1 :(得分:4)
澄清其他海报的评论。
通过存储过程使用跨数据库访问时,没有“直接”的负面性能影响。性能将由各个数据库的基础架构决定,即可用的索引,物理存储位置等。
这实际上是一种常见的做法,只要你遵循标准的查询调优原则,你就可以了。
答案 2 :(得分:2)
这完全取决于您引用的数据以及是否设置了索引以支持此直接访问。我能告诉你的最好的事情是创建查询,运行它,看看性能是否足够好。
如果性能不理想,请再次运行查询,让管理工具生成执行计划,以便识别瓶颈。
答案 3 :(得分:2)
是的,您目前正在做的事情 - 即复制 - 是“正确”的事情。
在另一个数据库中引用数据时,不能使用参照完整性,数据约束以及许多使RDBMS成为一个好工具的好东西。
访问另一个数据库直接将数据库绑定在一起 - 它们必须始终存在于同一台服务器上。您可能会遇到使用链接服务器的badwidth问题并按需执行proc。
复制为您提供了更大的灵活性。
答案 4 :(得分:1)
我们一直这样做。只要它们在同一台服务器上就没有问题。如果您要求数据必须在数据库a的表a中,然后才能进入数据库b上的表B,则需要编写一个触发器来检查,因为无法跨数据库设置外键关系。