有没有办法如何将基数估计“注入”到 SQL Server 优化器(任何版本)?
即类似于 Oracle 的基数提示。
我的动机是由这篇文章驱动的,查询优化器真的有多好?[1],他们测试基数估计量对选择一个糟糕计划的影响。因此,如果我可以强制 SQL Server 精确地“估计”复杂查询的基数就足够了。
[1]莱斯、维克多等人。“查询优化器有多好,真的吗?”
VLDB 基金会会议录 9.3 (2015):204-215。
我们希望看到 SQL Server 优化器在查询优化期间考虑的查询计划的所有变体。SQL Server 使用querytraceon
选项提供了非常详细的洞察力。例如,QUERYTRACEON 3604, QUERYTRACEON 8615
允许我们打印出 MEMO 结构并QUERYTRACEON 3604, QUERYTRACEON 8619
打印出在优化过程中应用的转换规则列表。这很好,但是,我们在跟踪输出方面有几个问题:
让我用一个更详细的例子来展示它。让我有两个人造表A
和B
:
WITH x AS (
SELECT n FROM
(
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)
) v(n)
),
t1 AS
(
SELECT ones.n + 10 * tens.n + 100 * hundreds.n + 1000 * thousands.n + 10000 * tenthousands.n + …
Run Code Online (Sandbox Code Playgroud)