仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1178|回复: 18
打印 上一主题 下一主题

[学习教程] PHP教程之MySQL 查询中的分页思绪的优化

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。mysql|分页|优化   作者:steeven

仿佛会商分页的人很少,岂非人人都沉浸于limit m,n?
在有索引的情形下,limit m,n速度足够,可是在庞杂前提搜刮时,
where somthing order by somefield+somefield
mysql会搜遍数据库,找出“一切”合适前提的纪录,然后掏出m,n笔记录。
假如你的数据量有几十万条,用户又搜刮一些很浅显的词,
然后要顺次读最初几页重温旧梦。。。mysql该很悲壮的一直操作硬盘。

所以,可以试着让mysql也存储分页,固然要法式共同。
(这里只是提出一个假想,接待人人一同会商)

ASP的分页:在ASP体系中有Recordset对象来完成分页,然而大批数据放在内存中,并且不晓得甚么时分才生效(请ASP高手
指导).
SQL数据库分页:用存储进程+游标体例分页,详细完成道理不是很清晰,假想假如用一次查询就失掉需求的了局,或是
id集,需求后续页时只需依照了局中的IDs读出相干纪录。如许只需很小的空间保存本次查询的一切IDs. (SQL中的查询结
果不晓得如何清晰过时渣滓?)

如许,可让mysql摹拟存储分页机制:
1. select id from $table where $condition order by $field limit $max_pages*$count;
查询合适前提的IDs.
限制最大合适前提的纪录数目,也能够不加。
2. 由于php在履行停止后一切变量都要lost,所以可以思索:
计划a. 在mysql创立一时表,查询了局用一个工夫或随机数作为独一标记拔出。
个中创立page1~pagen个字段,每一个字段保留该页中需求的ids, 如许一个id对一笔记录.
计划b. 假如翻开session,也能够放在session中保留,实践上是放在文件中保留。
创立一个$IDs数组,$IDs[1]~$IDs[$max_pages]. 思索到有时分用户会开几个
窗口同时查询,要为$ids做一个独一标记,防止查询了局互相掩盖。二维数组
和$$var都是好举措。
3. 在每页页的恳求中,直接找到对应的IDs,两头以","距离:
select * from $table where id in ($ids); 速度相对快
4. 扫尾要思索查询了局的主动排除,可以设置准时或按比例随机清晰。假如用mysql一时表要加上一个工夫标记字段,
session中要到场$IDs["time"]=time(); 在必定工夫今后不操作视为过时数据。

5. 假如要优化,可以思索用把1和2.a中的语句兼并成select ...... into ....

Note:
1.以上只是针对mysql的修补计划,但愿mysql哪天能把这些功效加出来
2.其它数据库也能够套用。
3.假如其它数据库还有更先辈的分页体例,请告知我或mailto: steeven@kali.com.cn
4.假如真的有良多数据要查询,仍是和mysql再会吧,sql,oracle都供应了更先辈的关头词索引查询。

不断改进,以上只是抛砖引玉,接待配合切磋分页成绩。(也可关于其它数据库)
但愿有一天能把各类分页体例收拾整顿出来供老手参考。



  在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。
莫相离 该用户已被删除
沙发
发表于 2015-2-4 10:58:58 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
只想知道 该用户已被删除
板凳
发表于 2015-2-25 20:41:07 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
海妖 该用户已被删除
地板
发表于 2015-2-25 20:48:31 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
谁可相欹 该用户已被删除
5#
发表于 2015-3-8 03:00:49 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
精灵巫婆 该用户已被删除
6#
发表于 2015-3-15 20:16:53 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
小妖女 该用户已被删除
7#
发表于 2015-3-27 12:10:47 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-30 04:11:49 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
深爱那片海 该用户已被删除
9#
发表于 2015-4-4 20:21:22 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
分手快乐 该用户已被删除
10#
发表于 2015-4-5 15:11:02 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
冷月葬花魂 该用户已被删除
11#
发表于 2015-4-10 19:42:27 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
愤怒的大鸟 该用户已被删除
12#
发表于 2015-4-12 21:51:11 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
不帅 该用户已被删除
13#
发表于 2015-4-22 10:32:57 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
乐观 该用户已被删除
14#
发表于 2015-4-27 23:35:25 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
admin 该用户已被删除
15#
发表于 2015-5-5 08:16:14 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
若相依 该用户已被删除
16#
发表于 2015-5-8 15:09:15 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
小魔女 该用户已被删除
17#
发表于 2015-6-5 21:58:42 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
山那边是海 该用户已被删除
18#
发表于 2015-7-11 23:23:39 | 只看该作者
当然这种网站的会员费就几十块钱。
因胸联盟 该用户已被删除
19#
发表于 2015-7-13 08:00:07 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 03:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表