[英]Should I begin a MySQL index with unique or non-unique field?
我遇到的问题如下:
id
(自动递增的整数)bigint
类型的字段another_id
和一个唯一的键state
的字段,只能取 4 个整数值(0 到 3)SELECT COUNT(*)
FROM my_table
WHERE another_id IN ( <about 100 values> )
AND state = ...
对于不同的state
值。
索引应该如何? 我在考虑两个选择:
KEY another_id:state (another_id, state)
KEY state:another_id (state, another_id)
这两种变体之间的性能有什么不同吗? 还有什么要考虑的吗?
编辑:引擎是 InnoDB
对于您显示的查询,您应该按state
和another_id
创建索引。
首先使用在相等条件中引用的任何列定义索引,然后添加在范围条件或 ORDER BY 或 GROUP BY 中引用的列。
您可能还喜欢我对 MySQL 中多列索引的字段顺序是否重要的回答或我的演示如何设计索引,真的,或视频。
我同意楼上的回答。 一个澄清虽然是你想要 ita 哈希索引而不是 btree 索引。 它应该工作得更快。 哈希索引不适用于任何涉及不等式的查询,例如 <=
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.