我需要在表中选择正确的行,在极少数情况下会存在额外的行。我通过用交叉应用替换内连接来做到这一点。它工作正常,直到我添加订单。
cross apply (select top 1 * from b where a.id = order_id order by C1 desc, C2 desc) t
执行计划显示估计要排序的行数为1,但实际数量为900 000.我同意估计,只有一行。我的猜测是,order by在where之前执行。
我重建了所有索引而不是> 30%支离破碎。 我尝试了很多变种,但没有一个足够快。另一个奇怪的是它在测试服务器上更快