仅使用一列索引表是否有意义?

SQL*_*Guy 5 sql t-sql indexing sql-server-2012

我想知道索引一个只包含一列的表是否有意义?该表将填充100或1000的记录,并将用于加入另一个(较大的表)以过滤其记录.

谢谢!

Gor*_*off 2

是和不是。明确的索引可能没有意义。primary key但是,通常会将单个列定义为 a (假设它从不NULL且唯一)。

这实际上是一种常见的做法。创建排除表对我来说并不罕见,其逻辑如下:

from . . . 
where not exists (select 1 from exclusion_table et where et.id = ?.id)
Run Code Online (Sandbox Code Playgroud)

主键索引可以加速此类查询。

在您的情况下,如果较大的表在用于连接的 id 上有索引,则可能不会产生任何影响。但是,您可以为优化器提供选择使用哪个索引的选项。

  • 底线(我希望每个人都能同意) - 拥有该指数没有任何缺点。它当然不会损害任何查询。如果有帮助——那就太好了,如果没有——也没什么坏处。(在 1000 行的 1 列上创建索引的时间应该微不足道) (2认同)