怎样在Mysql中优化order by语句
发布时间:2022-02-15 00:18:52 所属栏目:MySql教程 来源:互联网
导读:这篇文章给大家介绍如何在Mysql中优化order by语句,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 MySQL中的两种排序方式 1.通过有序索引顺序扫描直接返回有序数据 因为索引的结构是B+树,索引中的数据是按照一定顺序进行排列的,所
这篇文章给大家介绍如何在Mysql中优化order by语句,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 MySQL中的两种排序方式 1.通过有序索引顺序扫描直接返回有序数据 因为索引的结构是B+树,索引中的数据是按照一定顺序进行排列的,所以在排序查询中如果能利用索引,就能避免额外的排序操作。EXPLAIN分析查询时,Extra显示为Using index。 2.Filesort排序,对返回的数据进行排序 所有不是通过索引直接返回排序结果的操作都是Filesort排序,也就是说进行了额外的排序操作。EXPLAIN分析查询时,Extra显示为Using filesort。 ORDER BY优化的核心原则 尽量减少额外的排序,通过索引直接返回有序数据。 ORDER BY优化实战 首先要注意: MySQL一次查询只能使用一个索引,如果要对多个字段使用索引,建立复合索引。 ORDER BY优化 查询的字段,应该只包含此次查询使用的索引字段和主键,其余的非索引字段和索引字段作为查询字段则不会使用索引。 只查询用于排序的索引字段,可以利用索引排序: explain select store_id,email from customer order by store_id,email; 但是要注意,排序字段在多个索引中,无法使用索引排序,查询一次只能使用一个索引: explain select store_id,email,last_name from customer order by store_id,email,last_name; 只查询用于排序的索引字段和主键,可以利用索引排序: 画外音:MySQL默认的InnoDB引擎在物理上采用聚集索引这种方式,按主键进行搜索,所以InnoDB引擎要求表必须有主键,即使没有显式指定主键,InnoDB引擎也会生成唯一的隐式主键,也就是说索引中必定有主键。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |