mysql – 为什么在排序的东西上添加索引会减少排序中的工作量?
发布时间:2020-12-15 05:46:56 所属栏目:MySql 来源:互联网
导读:从这里:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html在某些情况下,MySQL可以使用索引来满足ORDER BY子句,而无需进行任何额外的排序.我认为索引有助于检索特定的数据片段(比如数组中的索引),在索引时会给你一个O(1)而不是O(n).但是在
|
从这里:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html 在某些情况下,MySQL可以使用索引来满足ORDER BY子句,而无需进行任何额外的排序. 我认为索引有助于检索特定的数据片段(比如数组中的索引),在索引时会给你一个O(1)而不是O(n).但是在排序时,我假设它们使用基于排序列的任何O(nlogn)或某种算法,但是显然索引排序的列可以减少涉及的工作量. 这是如何运作的? (我不确定这是一般的SQL还是MySQL的事情) 最佳答案 一个简单的答案:通常,索引本身按排序顺序存储(否则,使用索引快速查找记录将非常困难!)因此,“在某些情况下”(当ORDER BY与索引的排序顺序匹配时),数据可以通过其索引顺序返回,“无需进行任何额外的排序”.进一步:正如@Will A的答案提醒我的那样,您可能希望了解covering indexes,它扩展了这个概念. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- MYSQL教程mysql unix准换时间格式查找指定日期数据代码
- 将数据从实时MySQL数据库复制到登台服务器的策略
- mysql – 使用sql使用一个或多个关键字搜索多个列
- php – 存储重定向URL以供以后使用
- 如何与云关系数据库(在MySQL中)进行闪亮的应用程序对话?
- MySQL组与另一列的排序/优先级
- 是否有可能将mysql TIMESTAMP与毫秒进行比较?
- java – Hibernate OnDelete Cascade不适用于MySql,但适用于
- MySql EntityFrameworkCore System.TypeLoadException
- MySQL:如何从两个不同的字段创建别名?
