当用户请求结果集时,MySQL使用quicksort对结果集进行排序。现在,平均而言,quicksort的效率为O(Nlog N),这是可以接受的(即使其最坏的情况有时可能会达到O(N^2)。现在这对于大多数情况都很好,但是假设我有一个列,比如说,pin-number,它总是有6位数。一个特定的查询会获取数百万行,并根据该键对它们进行排序。在这种情况下,radix-sort不是一个更好的选择,给出一个线性顺序吗?有没有办法(也许是写个插件之类的)引入一个新的MySQL函数,比如说myorderby,它将通过我定义的自定义基数排序,根据给定的键对结果集进行排序?其次,这种调整是否值得?
发布于 2012-09-16 00:10:42
您可以获取MySQL源代码并注入自己的排序函数。如果它确实更快,你甚至可以把它提交给社区。
它是否值得,取决于它所需要的努力程度。我认为通过这样的修改让MySQL运行起来是一项相当繁重的工作,而且您也希望能够轻松地进行更新。因此,除非你真的需要速度提升和/或你能够将你的排序作为未来版本的默认设置,否则我认为它是不值得的。我从来没有经历过排序成为瓶颈。
https://stackoverflow.com/questions/12438559
复制相似问题