举例:一个30万条以内记录的数据表,做以下操作
取某个字段排序及求某两个字段的排序前100条
是直接用mysql排序分页取快还是mysql不排序直接取出30万条记录,用php排序后取出前100条快?
这两者的选择,与记录总数的选择临界点?
举例:一个30万条以内记录的数据表,做以下操作
取某个字段排序及求某两个字段的排序前100条
是直接用mysql排序分页取快还是mysql不排序直接取出30万条记录,用php排序后取出前100条快?
这两者的选择,与记录总数的选择临界点?
直接使用sql, 如果你取出数据库取出30万条,首先需要从数据库传输到你的服务器,这是一次io,而且这次io的量还不小,而且一次取这么多数据对数据库也有压力,如果是操作比较频繁,可能拖死数据库.第二你取出的30万数据要放在你的后端系统,也就是占用了你服务器的内存.第三你又需要使用算法对这30万数据进行排序又占用了这服务器的资源.
而你使用数据库对这三十万数据进行排序的话,算法现成的,数据本来就在数据库里,而且并且排序算法数据库系统有专门的设计,你只要写好sql数据库把几百条数据传给服务器就行了,假设30万数据3G当然实际上不可能这么大喽,100条也就1.024M,你想想传输这个3G的数据多占用你的带宽.下载都要下好久,而100条就1M多好.
所以你选择服务器操作这30万的数据,对数据库的资源和服务器的资源都进行了浪费,也没换来效率.虽然说是尽量避免给数据库压力,服务器能做的就服务器做,但你这种选择就本末倒置了.
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
自然是用 SQL 快。
用 PHP 取 30 万条再排序,采用什么排序算法,这些数据你要放哪?先不说排序的事,从 MySQL 读取 30 万条和读取前 100 条,这时间差距可就大了。
先对要排序的字段设置好索引,MySQL 干这个,专业的!