SQL 执行计划是基于 Schema 还是 Data 还是基于两者?

Ric*_*ich 5 sql indexing optimization sql-execution-plan

我希望这个问题不是太明显……我已经找到了很多关于解释执行计划的好信息,但有一个问题我还没有找到答案。

计划(更具体地说是相对 CPU 成本)是仅基于模式还是基于数据库中当前的实际数据?

我试图对我的产品数据库中需要索引的位置进行一些分析,但我正在使用我自己的测试系统,该系统没有接近该领域产品所拥有的数据量。我看到一些奇怪的事情,比如在添加索引后估计 CPU 成本实际上略有上升,我想知道这是不是因为我的数据集太小了。

我正在使用 SQL Server 2005 和 Management Studio 来制定计划

Ric*_*iwi 5

它将基于架构和数据。Schema 告诉它哪些索引可用,Data 告诉它哪个更好。

根据您使用的 DBMS(您没有说明),答案可能会有小幅度的变化,但它们都维护索引的统计信息,以了解索引是否有帮助。如果一个索引将 1000 行分成 900 个不同的值,那么它是一个很好的索引。如果一个索引只为 1000 行产生 3 个不同的值,那么它不是真的,selective所以它不是很有用。