首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中多列索引的order by id

问mysql中多列索引的order by id
EN

Stack Overflow用户
提问于 2020-09-01 00:50:09
回答 1查看 33关注 0票数 0

假设我的表上有一个多列索引。例如,索引位于列a、b和c上。

现在我想搜索如下内容: select * from my_table where a=1 order by id DESC。

我想知道我是否必须创建另一个索引,如,id,以使我的查询更快,或者前面提到的索引就足够了。我之所以问这个问题,是因为我不知道MySQL如何在多列索引上按id排序。

EN

回答 1

Stack Overflow用户

发布于 2020-09-02 07:41:57

对于WHERE a=1 ORDER BY id,INDEX(a,b,c)只有部分用处。

使用ENGINE=InnoDB和id作为PRIMARY KEY,INDEX(a,b,c)几乎与INDEX(a,b,c,id)相同。但是尝试将其用于查询--当它看到b时就会停止。

首先,想一想按姓氏排序的名字列表。查询是... WHERE last = 'gates' ORDER BY first。现在想象一下这个列表。所有的“盖茨”都会在那里,这是first已经订购的。

该索引的布局类似于INDEX(a,id)。(或者假设id是静默附加的INDEX(a)。)

关于创建最佳索引的更多信息,给定一个查询:http://mysql.rjweb.org/doc.php/index_cookbook_mysql

哦,"DESC“简单地从最后开始--“盖茨,扎克”--然后倒着读这个列表,直到你读过第一个“盖茨”。

搜索"Joe G.“索引将是无用的。但是,也可以使用INDEX(first, last)。在搜索"J. G.“时,没有任何名称索引是非常无用的。

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

https://stackoverflow.com/questions/63674952

复制
相关文章

相似问题

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