2012-09-15 28 views
0

当用户请求时,MySQL使用quicksort对结果集进行排序。现在,平均而言,quicksort的效率为O(Nlog N),这是可以接受的(尽管最坏的情况有时可能会达到O(N^2)。现在在大多数情况下都可以,但假设我有一个列,比如pin-number,总是有6个数字,并且一个特定的查询获取数百万行并根据该键对它们进行排序。在这种情况下,radix-sort不是一个更好的选择,它给出了一个线性顺序吗?有没有办法(可能是写一个插件或什么的)可以引入一个新的MySQL函数,比如说myorderby,它将根据给定的键通过我定义的自定义基数排序对结果集进行排序?其次,这个调整是否值得?在MySQL中使用自定义排序功能

回答

1

您可以抓取MySQL来源并注入你自己的排序功能,如果确实更快,你甚至可以将它提交给commu无穷大。

如果值得,取决于所花费的工作量。我认为通过这种修改让MySQL运行起来是非常有用的工作,您也希望能够轻松地进行更新。所以除非你真的需要提高速度和/或你可以将你的排序设为未来版本的默认值,否则我认为这是不值得的。 我从来没有经历过排序成为瓶颈。

+0

我猜对了。任何有关在哪里以及如何获取源代码的想法?有没有附带的文档让黑客更容易理解代码? – SexyBeast

+0

文档在这里:http://dev.mysql.com/doc/refman/5.1/en/source-installation.html我从来没有从源代码安装MySQL,甚至偷看到它,所以我真的不能告诉你有多困难这将是修改它。 – GolezTrol