|
|
1
7
有几件事要尝试:
编辑:您注意到复制数据库使其工作正常,这告诉我索引统计数据已过期。你可以用类似
使用
|
|
|
2
0
我要做的第一件事是指定我想要的确切列,看看问题是否仍然存在。我怀疑你需要这三张桌子上的所有列。 听起来很难从结果表中取出所有行。一排有多大?看看表中的所有数据有多大,然后除以行数。右键单击表->属性…,存储选项卡。 尝试将WHERE子句放入子查询中以强制它首先执行该操作?
或者,如果您希望得到少量的样本,这可能会更好。
|
|
|
3
0
如果你做了
所以,如果你想要所有这些数据页,而且因为你加入了一百万。行到1100万。行(11行中的1行对SQL Server来说不是很有选择性),使用索引查找行,然后对找到的每一行的实际数据页进行书签查找,可能效率不高,因此SQL Server使用聚集索引扫描。 因此,长话短说:只选择那些你真正需要的行!因此,您可以给SQL Server一个使用索引的机会,在那里进行查找,并找到必要的数据。 如果您只选择三列、四列,那么SQL Server查找和使用包含这些列的索引的可能性比从所有涉及的表中请求所有数据的可能性要高得多。 另一种选择是尝试找到一种表示子查询的方法,例如使用一个公共表表达式,它可以从两个较小的表中获取数据,并进一步减少行数,并将希望非常小的结果与主表相结合。如果有一个只有40或800个结果的小结果集(而不是两个具有1 mio的表)。然后,SQL Server可能更倾向于使用聚集索引查找,并对40或800行执行书签查找,而不是执行完全聚集索引扫描。 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 1 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 1 年前 |