我一直试图找到以下问题的简明答案,我读了很多,但我仍然不确定。也许没有简单的答案,因为场景可能是如此不同。
但以下是一些问题:
1)我是否应该索引一个tinyint列,其中所有记录都是0或1?
示例查询,其中postActive列将每条记录作为0或1:
SELECT postId, postName, postTitle
FROM postTable
WHERE postDate > Now()
AND postActive = 12)我是否应该索引一个int列,其中所有记录都有0,除了具有表中唯一的一个独立int值的记录?
在这个例子中,列orderProcessingId在表中是100%唯一的(除了零),而绝大多数记录对于orderProcessingId都是0。
SELECT orderId, orderInformation, orderData, orderStuff
FROM orderTable
WHERE orderProcessingId = 38457237在这两张表中都有数十万条记录。
我想我之所以对此表示怀疑,是因为索引似乎依赖于相对分布的值频率来提高性能。但在示例1中,两个值(和两个值)只有极高的频率,而在示例2中,一个值(0)的频率极高,异常没有重复频率。
但我的想法都是基于猜测.所以。你能告诉我什么?
发布于 2013-03-29 15:24:28
我想我之所以对此表示怀疑,是因为索引似乎依赖于相对分布的值频率来提高性能。
不一定。
我应该索引所有记录都是0或1的tinyint列吗?
取决于这些值的分布是否基本相等,如果不是,则取决于您是否对所发生的值感兴趣。
我是否应该索引一个int列,其中所有记录都有0,除了表中唯一的具有备用int值的记录之外?
因为你试图寻找其中一个稀有和独特的价值-是的。
(我希望你不要在这里混淆0和NULL,顺便说一下。-因为如果您的整数类型条目是唯一的,除了值0的条目外,您不能在这里使用唯一索引。)
https://stackoverflow.com/questions/15705971
复制相似问题