首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql索引性能

mysql索引性能
EN

Stack Overflow用户
提问于 2013-03-29 15:10:24
回答 1查看 566关注 0票数 2

我一直试图找到以下问题的简明答案,我读了很多,但我仍然不确定。也许没有简单的答案,因为场景可能是如此不同。

但以下是一些问题:

1)我是否应该索引一个tinyint列,其中所有记录都是0或1?

示例查询,其中postActive列将每条记录作为0或1:

代码语言:javascript
复制
SELECT postId, postName, postTitle
FROM postTable
WHERE postDate > Now()
AND postActive = 1

2)我是否应该索引一个int列,其中所有记录都有0,除了具有表中唯一的一个独立int值的记录?

在这个例子中,列orderProcessingId在表中是100%唯一的(除了零),而绝大多数记录对于orderProcessingId都是0。

代码语言:javascript
复制
SELECT orderId, orderInformation, orderData, orderStuff
FROM orderTable
WHERE orderProcessingId = 38457237

在这两张表中都有数十万条记录。

我想我之所以对此表示怀疑,是因为索引似乎依赖于相对分布的值频率来提高性能。但在示例1中,两个值(和两个值)只有极高的频率,而在示例2中,一个值(0)的频率极高,异常没有重复频率。

但我的想法都是基于猜测.所以。你能告诉我什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-29 15:24:28

我想我之所以对此表示怀疑,是因为索引似乎依赖于相对分布的值频率来提高性能。

不一定。

我应该索引所有记录都是0或1的tinyint列吗?

取决于这些值的分布是否基本相等,如果不是,则取决于您是否对所发生的值感兴趣。

我是否应该索引一个int列,其中所有记录都有0,除了表中唯一的具有备用int值的记录之外?

因为你试图寻找其中一个稀有和独特的价值-是的。

(我希望你不要在这里混淆0NULL,顺便说一下。-因为如果您的整数类型条目是唯一的,除了值0的条目外,您不能在这里使用唯一索引。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15705971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档