首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL二级索引

MySQL二级索引
EN

Stack Overflow用户
提问于 2012-07-11 03:21:19
回答 3查看 1.3K关注 0票数 2

如果我试图提高使用特定表中4个不同列的查询的性能,我应该创建4个不同的索引(每列一个),还是应该创建一个包含所有列的索引?

EN

回答 3

Stack Overflow用户

发布于 2012-07-11 03:23:01

根据我的经验,一个包含所有4个值的索引是最快的。如果使用where,请尝试按对where有用的顺序放置列。

票数 2
EN

Stack Overflow用户

发布于 2012-07-11 03:28:24

包含所有四列的索引;WHERE中使用的列应该放在第一位,对其执行==比较的列应该放在第一位。

有时,将优先级给予整型列可以获得更好的结果;

举个例子,

代码语言:javascript
复制
 SELECT title, count(*) FROM table WHERE class = 'post' AND topic_id = 17
    AND date > @@BeginDate and date < @@EndDate;

将有一个索引: topic_id,post,date和title,按照这个顺序。

索引中的"title“仅用于使DB可以找到与查询匹配的那些记录的"title”值,而无需额外访问数据表。

记录在第一个字段上的分布越平衡,您就会得到最好的结果(在本例中,假设10%的行的topic_id = 17,您将丢弃其余的90%,而不必运行与'post‘的字符串比较--这并不是说字符串比较的开销特别大。根据数据的不同,您可能会发现先为date创建索引,然后再发布,甚至将date first用作MySQL分区会更好。

票数 0
EN

Stack Overflow用户

发布于 2012-07-11 06:34:24

单个索引通常比索引合并更有效,所以如果您有像f1 = 1 AND f2 = 2 AND f3 = 3 AND f4 = 4这样的条件,单个索引将是正确的决策。

为了达到最佳性能,按照基数的降序(不同值的计数)枚举索引字段,这将有助于减少分析的行数。

少于4个字段的索引可能更有效,因为它需要更少的内存。

http://www.mysqlperformanceblog.com/2008/08/22/multiple-column-index-vs-multiple-indexes/

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

https://stackoverflow.com/questions/11420383

复制
相关文章

相似问题

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