[英]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.