在MySQL中使用自定义排序功能

时间:2012-09-15 15:16:13

标签: mysql sorting quicksort radix-sort

当用户请求时,MySQL使用quicksort对结果集进行排序。现在平均而言,quicksort的效率为O(Nlog N),这是可以接受的(尽管最糟糕的情况有时会达到O(N^2)。现在对大多数情况来说都没问题,但想象一下我有一个列,比如,pin-number,总是有6位数。一个特定的查询获取数百万行并根据该键对它们进行排序。在这种情况下,radix-sort不是更好的选择,给出一个线性顺序?有没有办法(也许写一个插件或其他东西)我可以引入一个新的MySQL函数,比如说myorderby,它会根据给定的密钥通过自定义基数排序结果集 - 我有第二,这个调整值得吗?

1 个答案:

答案 0 :(得分:1)

您可以获取MySQL源并注入自己的排序功能。如果它确实更快,你甚至可以将它提交给社区。

如果它值得,取决于它所花费的精力。我认为通过这样的修改让MySQL运行起来相当有意义,而且你也希望能够轻松更新。因此,除非你真的需要速度增益和/或你能够将你的排序作为未来版本的默认值,我认为它是不值得的。 我从来没有经历过排序成为瓶颈。