order by要如何使用

排序是怎么做的

  • order by 是做排序的,具体怎么排取决于优化器的选择,如果优化器认为走索引更快,那么就会用索引排序,否则,就会使用filesort (执行计划中extra中提示:using filesort),但是能走索引排序的情况并不多,并且确定性也没有那么强,很多时候,还是走的filesort。
  • filesort这种排序方式中,如果需要排序的内容比较少,就会基于内存中的sort_buffer,否则就需要使用磁盘临时文件进行排序了。并且在实际排序过程中,如果字段长度并不是特别长,那么就会使用全字段排序的方式直接在sort_buffer中排序后返回结果集。如果字段长度并特别长,那么就可能基于空间考虑,采用row_id排序,这样就会在排序后进行二次回表后返回结果集。

扩展

  • 当我们在做查询的时候,经常会使用order by进行排序,而当我们只想查询部分数量的时候,也会使用limit进行限制条数。
  • 当我们在做查询的时候,经常会使用order by进行排序,而当我们只想查询部分数量的时候,也会使用limit进行限制条数。
  • 这是由于如果ORDER BY的列中,多行具有相同的值,服务器可以自由地以任何顺序返回这些行,并且根据整体执行计划的不同可能会以不同的方式返回它们。
  • 所以,当我们在进行Limit+order by (字段), (ID)的时候,一定要尽量避免使用可能重复的字段,如时间、名称等,而应该选择唯一性的字段,如主键ID,或者唯一性索引。

order by要如何使用
http://lzhnet.top/2023/05/14/order-by要如何使用/
Author
kuaile000
Posted on
May 14, 2023
Licensed under