PHP与MYSQL排序的效率比对
来源:互联网 发布:网络红歌排行榜 编辑:程序博客网 时间:2024/05/15 02:50
首先,PHP与MySQL相比,在排序方面具有如下优势:
1、考虑整个网站的可伸缩性和整体性能,在应用层(PHP)中排序明显会降低数据库的负载,从而提升整个网站的扩展能力。而数据库的排序,实际上成本是非常高的,消耗内存、CPU,如果并发的排序很多,DB 很容易到瓶颈。
2、如果在应用层(PHP)和MYSQL之间还存在数据中间层,合理利用,PHP会有更好的收益。
3、PHP在内存中的数据结构专门针对具体应用来设计,比数据库更为简洁、高效;
4、PHP不用考虑数据灾难恢复问题,可以减少这部分的操作损耗;
5、PHP不存在表的锁定问题;
6、MySQL中排序,请求和结果返回还需要通过网络连接来进行,而PHP中排序之后就可以直接返回了,减少了网络IO。
至于执行速度,差异应该不会很大,除非应用设计有问题,造成大量不必要的网络IO。另外,应用层要注意PHP 的 Cache 设置,如果超出会报告内部错误;此时要根据应用做好评估,或者调整Cache。具体选择,将取决于具体的应用。
列出一些PHP中执行排序更优的情况:
1、数据源不在MySQL中,存在硬盘、内存或者来自网络的请求等;
2、数据存在 MySQL中,量不大,而且没有相应的索引,此时把数据取出来用PHP排序更快;
3、数据源来自于多个MySQL 服务器,此时从多个 MySQL 中取出数据,然后在PHP中排序更快;
4、除了MySQL之外,存在其他数据源,比如硬盘、内存或者来自网络的请求等,此时不适合把这些数据存入MySQL 后再排序;
列出一些必须在MySQL中排序的实例:
1、MySQL中已经存在这个排序的索引;
2、MySQL中数据量较大,而结果集需要其中很小的一个子集;比如 1000000 行数据,取TOP10;
3、对于一次排序、多次调用的情况,比如统计聚合的情形,可以提供给不同的服务使用,那么在MySQL中排序是首选的。另外,对于数据深度挖掘,通常做法是在应用层做完排序等复杂操作,把结果存入MySQL即可,便于多次使用。
4、不论数据源来自哪里,当数据量大到一定的规模后,由于占用内存/Cache 的关系,不再适合PHP中排序了;此时把数据复制、导入或者存在MySQL ,并用INDEX 优化,是优于PHP 的。不过,用 Java,甚至C++ 来处理这类操作会更好。有些类似大数据集聚合或者汇总的数据,在客户端排序得不偿失。当然,也有用类似搜索引擎的思路来解决类似应用的情况。- PHP与MYSQL排序的效率比对
- PHP 中执行排序与 MySQL 中执行排序效率比
- 数据库日期比对的效率提升
- php中mysql_num_rows与count(*)的效率对
- mysql 中 character set 与 collation 的点滴理解(collation即比对方法,用于对应字符集的数据集如何排序以及字符串的比对规则)
- 三种批量删除PLSQL写法效率的比对
- PHP中的加密方法的比对
- PHP一键比对更新MYSQL数据库的一些想法
- MySQL的count(*)比count(1)效率要高
- Lua中table内建排序与C/C++/Java/php/等内排序算法的排序效率比较
- erlang & php 操作mysql的效率测试
- Hive Impala Count 效率比对
- 一个比冒泡,选择效率快的排序方法(折半排序)
- 数据比对与mysql ON DUPLICATE KEY UPDATE操作
- NSArray排序方法比对
- 对一些简单排序算法的效率比较
- 提高MySQL效率与性能的技巧
- 提高MySQL效率与性能的技巧
- jquery 操作下拉列表 获取值与显示值
- 使用ActiveMQ发送和接受消息(1)
- mono for Android配置环境和listview简单显示数据(1)
- 关于C语言指针
- mysql null排序
- PHP与MYSQL排序的效率比对
- ie6下iframe出现水平滚动条的解决办法
- 学习linux的步骤
- jsp 分页类的实现
- [源码分享]NPOI读取Excel到 dataTable
- 关于插件架构
- linux 常用命令分类整理
- 【SQLServer】-如何实现定义变量,完成数据库的查询操作
- linq to xml 实战