考虑一个简单的 3 表数据库 i SQL Server 2012。
表 A
AId
Name
Other1
Other2
表 B
BId
Name
表 A_B
BId
AId
简单示例查询:
SELECT TOP(20) A.Aid, A.Name, B.Bid, B.Name
FROM A
INNER JOIN A_B ON A.AId = A_B.Aid
INNER JOIN A as AA ON AA.Aid = A_B.Aid
INNER JOIN B ON B.BId = A_B.Bid
WHERE AA.Aid = @aid
AND A.Other1 = @other1
表 A
有几百万行。表 B 有几千行
。表 A_B 的行数是 A
的十倍。Other1 和 Other2 字段可用于过滤查询。使用 Top(20) 的连接查询可以以每秒 100 个或更多请求的速度完成(规格尚不清楚)。查询几乎总是使用不同的参数,因此结果缓存无济于事。
SQL Server 2012 中的哪些功能可以帮助提高上述示例的联接查询性能?
我最初的想法是,既然都是 PK int 连接,我无能为力。但是我不知道分区视图是否有帮助。
我在想这可能只是增加内存。