【菜鸟提问】PHP有办法合并结果集吗 我想在内存里分页。。想从一个结果集里通过循环把某些行(比如第一页 1~30行) 放到另一个结果集里可以实现吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 结构不同的话 mysql本身无法直接合并你这2个结果集有什么联系不 select * from table1 into table2 错误的做法,php本身没有常驻内存的东西,你在内存里分页没意义,除了当前页需要显示的那些数据,剩下的都是一堆垃圾也被你装进内存了。 楼上正解 PHP作为虚拟机语言 一次运行完毕就会清空所有内存中的数据 只有预定义标量和全局变量可以保存,就算你用分页算法 取后面几页的时候还是会重复从数据库读取 MySQL虽然有内存建表机制 但是带宽还是被占用了而这种占用时没有必要的 所以传ID的分页做法比较现实 数据量大且常用 可以用 mancache内存hash表 从服务器先读完一整张表 放到内存里再去使用 作为扩展 给PHP调用 都是查的一个表里的数据- -就是比如说$query = @mysql_query("select * from tablename1")比方说$query里返回了100条数据 我想把前30条保存到另一个结果集里。。那您说 要做分页的话 只能查询两次,先从数据库查到一共有多少行记录再根据这个记录数来分页吗?但是如果where后面有比较多的条件 似乎这个方法将来阅读性比较差些 mancache内存hash表 不好意思 菜鸟级不是很明白- -可以的话 能说详细点吗 你是要将结果集放到物理内存里(RAM)?(就像是C那样,开辟地址?)还是就是想保存一下,能让服务器找到并应用?如果想放到物理内存里,就只能用memcache这个PHP扩展进行处理。如果就是想保存一下,有很多方法,存COOKIE或SESSION行不? 你所谓的两次查询,第一次是先查出数据库总数。第二次再去查出当前页该显示的是数据。没错,就是这样。你在查询总数的时候,where条件还是要加的,但是order by和一些不影响数量的语句不要加,因为没必要还非常消耗资源,你只是为了取个你期望取到的总数,order by不会影响取出的数量,所以不用加它。一次性都放在内存里,你考虑过你的数据量有多大吗?考虑过你的数据增量吗?那些当前页不显示的数据,全都被塞在内存里了。这是不是很没必要的消耗呢?所谓memcached是一个第三方软件,他可以让数据常住内存。他也提供了给php的接口,你可以把数据放在memcached里面。可以用来将数据常住内存的第三方软件还有很多,如APC,Xcache,zend plamform等等。不过即使是用这些软件,也不能把数据一次性查出来全扔到内存里。 其实我的想法很简单就是想照以前写.net那样 一次性把数据查出来 然后一直操作这一个结果集 (比如控制显示那几行) - -可能是我的说法有问题比如说我之前做.net的时候 是拿到一个结果集后放到ViewState里 然后一直操作这一个结果集。。 拿个数组,一直存fetcharray就是了 关于php网站优化的问题 PHP可以从一个服务器向另外一个服务器传递表单么 请教:php中语句中的<p></p>是什么意思? 希望做B2C电子商务网站,类似于小型的当当网, php翻页问题等待解答 ->等同于什么? 请教各位大侠,用php如何连接并操作oracle数据库,有没有相应文档啊,谢谢! 请问这段图片上传的程序错在哪里? PHP是不是能调用外部程序? 关于php一个分也显示 请问我这样写错了吗? 浏览本地含buffer控制语句的php文件,总弹出下载文件对话杠。
你这2个结果集有什么联系不
而这种占用时没有必要的 所以传ID的分页做法比较现实
数据量大且常用 可以用 mancache内存hash表 从服务器先读完一整张表 放到内存里再去使用 作为扩展 给PHP调用
都是查的一个表里的数据- -
就是比如说
$query = @mysql_query("select * from tablename1")比方说$query里返回了100条数据 我想把前30条保存到另一个结果集里。。那您说 要做分页的话 只能查询两次,先从数据库查到一共有多少行记录再根据这个记录数来分页吗?但是如果where后面有比较多的条件 似乎这个方法将来阅读性比较差些
mancache内存hash表 不好意思 菜鸟级不是很明白- -可以的话 能说详细点吗