我有一个table1在db1和table2在db2上的SQL Server 2008 R2。
如果我做一个选择查询加入两个表,得到结果真的很慢。
一个简单的查询,如
SELECT *
FROM db1.dbo.table1 t1
LEFT JOIN db2.dbo.table2 t2 ON t1.k1 = t2.k2
Run Code Online (Sandbox Code Playgroud)
有时真的很慢。
我不确定这是否对 SQL Server 很常见,并且“必须像规则一样”“不连接来自不同数据库的两个表”。
在那种情况下......我补充说这个问题,我有一个存储在一个字段上的数据库二进制数据,我喜欢与主数据库分开而不增加主表的大小......最好为此对数据库进行分区?
我用两个简单的表进行了测试,但加入这两个表仍然很慢。
在此先感谢您的帮助。
..几年后更新... 24-09-18
确保您加入的字段具有相同的类型、大小和排序规则。
示例:某些属性是 varchar(255) 和另一个 varchar(20) ......这可能是一个问题,因为引擎必须将一种类型转换为另一种类型(发生隐式转换),而有时它运行得更快......如果重新索引或数据库发生一些变化,你可以看到在某个时刻查询开始花费更多的时间来完成......
如果您无法更改字段类型以匹配其中一个 db/tables,请尝试执行显式转换以查看是否可以提高查询速度。用
cast(fieldname as type(size)) = fieldName2)