我一直在努力寻找以下问题的简明答案,并且我已经阅读了很多,但我仍然不确定。也许没有简单的答案,因为场景可能如此不同。
但这里有几个问题:
1) 我应该索引一个所有记录都是 0 或 1 的 tinyint 列吗?
示例查询,其中 postActive 列的每条记录都为 0 或 1:
SELECT postId, postName, postTitle
FROM postTable
WHERE postDate > Now()
AND postActive = 1
2) 我是否应该索引一个 int 列,其中所有记录都为 0,除了具有在表中唯一的备用 int 值的记录?
对于此示例,列 orderProcessingId 将在表中 100% 唯一(除了零),并且绝大多数记录的 orderProcessingId 为 0。
SELECT orderId, orderInformation, orderData, orderStuff
FROM orderTable
WHERE orderProcessingId = 38457237
在这两个表中都有数十万条记录。
我想我质疑的原因是因为索引似乎依赖于相对分布的值频率来提高性能。但是在示例 1 中,两个(并且只有两个)值的频率都非常高,而在示例 2 中,一个值 (0) 的频率非常高,并且没有例外的重复频率。
但我的想法几乎都是基于猜想......所以。你能告诉我什么?