【发布时间】:2011-06-14 05:19:10
【问题描述】:
我试图了解在定义多列索引时什么更好:
- 将最具选择性的列放在首位(更高的基数,为了速度?);或
- 将选择性较低的列放在首位(较低的基数,用于索引压缩?)
或者这取决于我是针对速度还是空间进行优化?
【问题讨论】:
-
您的索引顺序由索引要服务的查询定义。一旦您通过查询定义了索引,您就无法选择它们出现的顺序,而不会使索引对某些查询不可用。
-
再一次,我明白这一点,但是在服务于查询的两个选项之间 - 哪个更好,考虑到基数的巨大差异?
-
@sbargay 你有没有找到这个问题的答案?我知道你在问什么。如果你有 country_id 和 person_id,是设置索引 country_id、person_id 更好,还是先设置更高的基数与 person_id、country_id。看来您显然知道如何在查询中正确使用索引,但我和您有同样的问题。
标签: mysql optimization indexing