Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php排序是否比mysql更好;以“订购”方式订购;?_Mysql_Performance_Sorting - Fatal编程技术网

php排序是否比mysql更好;以“订购”方式订购;?

php排序是否比mysql更好;以“订购”方式订购;?,mysql,performance,sorting,Mysql,Performance,Sorting,我想知道,在性能方面,考虑到mysql select对记录非常多(>1.000.000)的表进行排序,使用sql“order by”或使用经典编程排序算法对查询后的结果进行排序是否更好。。。有人有什么建议吗 坦克,把手放下。它为此进行了优化,并且可以利用索引。在PHP中这样做会很糟糕(而且你会很快达到内存限制)。如果你真的在应用程序的内存中获得了记录,那么mysql仍然会打败你的应用程序,因为如果你正确配置了数据库,它就不必排序 如果您想在一个包含1百万条记录的表中进行排序,您可以在索引中提供,

我想知道,在性能方面,考虑到mysql select对记录非常多(>1.000.000)的表进行排序,使用sql“order by”或使用经典编程排序算法对查询后的结果进行排序是否更好。。。有人有什么建议吗


坦克,把手放下。它为此进行了优化,并且可以利用索引。在PHP中这样做会很糟糕(而且你会很快达到
内存限制)。

如果你真的在应用程序的内存中获得了记录,那么mysql仍然会打败你的应用程序,因为如果你正确配置了数据库,它就不必排序


如果您想在一个包含1百万条记录的表中进行排序,您可以在索引中提供,该索引通常作为B树实现,Mysql可以在其中遍历并获得排序结果。

Mysql将获胜。除了列出的其他原因之外,还有一个原因是,假设记录已经在数据库中,您不必将它们从数据库中复制出来进行排序。分页或子索引将使它们变得简单并自动优化


简而言之,如果DB能做到这一点,那么DB几乎总是应该做到的。

您将一个系统与一个用优化C实现的方法进行比较,这个方法就是为了完成这一任务,而另一个方法将用解释性脚本语言实现

基本上,用C编写的任何函数都比用PHP编写的等效函数快得多,速度是10到100倍


如前所述,毫无疑问,正确配置数据库并让它完成工作要高效得多。

有时,如果您可以避免“使用临时;使用文件排序”,那么这是值得的,尽管我没有做过大量的测试

1   SIMPLE  favorites   ref source_id,user2_id  source_id   3   const   137 Using index; Using temporary; Using filesort
1   SIMPLE  users   eq_ref  PRIMARY,updated PRIMARY 3   apm.favorites.target_id 1   Using where
在ruby中,我不要求mysql按名称排序,而是按名称排序

results.sort_by {|u| u.name.downcase}
得到的mysql查询现在更简单:

1   SIMPLE  favorites   ref source_id,user2_id  source_id   3   const   137 Using index
1   SIMPLE  users   eq_ref  PRIMARY,updated PRIMARY 3   apm.favorites.target_id 1   Using where

当然,如果返回的行数超过几百行,则不希望执行此操作。

+1-传输数据进行排序比在数据库上执行此操作要昂贵得多。