Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在易变性较小的字段上创建索引有意义吗?_Sql_Sql Server 2005_Tsql_Indexing_Performance - Fatal编程技术网

Sql 在易变性较小的字段上创建索引有意义吗?

Sql 在易变性较小的字段上创建索引有意义吗?,sql,sql-server-2005,tsql,indexing,performance,Sql,Sql Server 2005,Tsql,Indexing,Performance,我听人说,当字段的可变性较小时,创建索引是没有意义的。 例如,如果它只存储A、B、C、D值,那么拥有这样的索引并没有什么好处,而且更多的SQL server在执行查询时根本不会使用它 我想知道你对那件事的看法 编辑 样本使用 Select * FROM Table WHERE Status = 'A' -- A means Active 或与其他领域相结合 Select * FROM Table WHERE Group_ID = 123 AND Status = 'A' 一般的建议

我听人说,当字段的可变性较小时,创建索引是没有意义的。
例如,如果它只存储A、B、C、D值,那么拥有这样的索引并没有什么好处,而且更多的SQL server在执行查询时根本不会使用它

我想知道你对那件事的看法

编辑

样本使用

Select * FROM Table WHERE Status = 'A'   -- A means Active
或与其他领域相结合

Select * FROM Table WHERE Group_ID = 123 AND Status = 'A'   

一般的建议是,字段上的索引很少有用

对于高基数数据(即具有许多可能值的列,其中列中的数据是唯一的或几乎唯一的)最有效

一些数据库引擎,如Oracle和PostgreSQL,支持。位图索引传统上被认为适用于性别(男性或女性)等数据,这些数据具有少量不同的值,但这些值出现的次数很多


更新:

关于示例用法,请注意,对于第二个查询,在
Group\u ID
上建立索引可能就足够了


这是第一个查询,你应该考虑如何限制结果。这还取决于您计划运行此查询的频率。在某些情况下,完整的表格扫描可能是唯一的选择。

如果另一种选择是表格扫描,那么如果它是一个大的表格,那么它可能是值得的,但是看看是否有可能使它成为一个更大的表,以获得更多的好处。

您是否打算单独使用此列?像这样:

SELECT TheCol FROM Mytable WHERE myCol = 'A'
如果不是,那么它将覆盖或复合,并且可能有利于包含此列的查询

没有更多的信息很难说

编辑:如果您正在执行
选择*
操作,则所有下注都将被取消。但是,第二列的两列上的索引可能会有所帮助