我主要是一个Actionscript开发人员,决不是SQL专家,但有时我不得不开发简单的服务器端的东西。所以,我想我会问更多有经验的人关于标题中的问题。使用基数较低的索引是否有意义?
我的理解是,通过在一个只包含几个不同值的列中设置索引,你并不会获得太多收益。我有一个列保存一个布尔值(实际上它是一个小的int,但我用它作为标志),并且这个列用于大多数查询的WHERE子句中。在理论上的“平均”情况下,一半的记录值将为1,另一半为0.因此,在这种情况下,数据库引擎可以避免全表扫描,但是无论如何都必须读取很多行(总排/ 2)。
那么,我应该让这个列成为索引吗?
为了记录,我使用的是Mysql 5,但是我更关心为什么它没有意义地索引一个列,我知道这将有一个低基数的一般理由。
在此先感谢。
感谢您的回答。在这种情况下,我并未在该列上排序。它只是将记录标记为启用/禁用。基本上,我将它用于软删除。这就是为什么我必须在大多数查询的WHERE子句中使用它。 – 2010-01-21 21:58:10