对于mysql对php数据排序的疑问,求高手指点!

举例:一个30万条以内记录的数据表,做以下操作
取某个字段排序及求某两个字段的排序前100条
是直接用mysql排序分页取快还是mysql不排序直接取出30万条记录,用php排序后取出前100条快?
这两者的选择,与记录总数的选择临界点?

阅读 1.5k
2 个回答

自然是用 SQL 快。

用 PHP 取 30 万条再排序,采用什么排序算法,这些数据你要放哪?先不说排序的事,从 MySQL 读取 30 万条和读取前 100 条,这时间差距可就大了。

先对要排序的字段设置好索引,MySQL 干这个,专业的!

直接使用sql, 如果你取出数据库取出30万条,首先需要从数据库传输到你的服务器,这是一次io,而且这次io的量还不小,而且一次取这么多数据对数据库也有压力,如果是操作比较频繁,可能拖死数据库.第二你取出的30万数据要放在你的后端系统,也就是占用了你服务器的内存.第三你又需要使用算法对这30万数据进行排序又占用了这服务器的资源.

而你使用数据库对这三十万数据进行排序的话,算法现成的,数据本来就在数据库里,而且并且排序算法数据库系统有专门的设计,你只要写好sql数据库把几百条数据传给服务器就行了,假设30万数据3G当然实际上不可能这么大喽,100条也就1.024M,你想想传输这个3G的数据多占用你的带宽.下载都要下好久,而100条就1M多好.

所以你选择服务器操作这30万的数据,对数据库的资源和服务器的资源都进行了浪费,也没换来效率.虽然说是尽量避免给数据库压力,服务器能做的就服务器做,但你这种选择就本末倒置了.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题