直到最近我才真正考虑过这个(分页)作为一个问题。当我坐下来专注于它时,我发现自己面临很多问题。
我感兴趣的是一个基本的联系人管理系统,用户可以在其中添加/更新/删除/搜索联系人。搜索部分是我需要有效实现分页的地方。
我的想法(+ve 和 -ve 点)
- 我可以指定
pageNo
and offset
while POST
正在向我的search.php
页。该页面将触发一个简单的 MySQL 查询来检索结果。由于行数几乎可以达到数千行,因此我需要对其进行分页。很简单,但我需要启动same对每个不同的页面进行一次又一次的查询。这意味着,当用户从 page1 转到 page2 时,将触发相同的 MySQL 查询(当然使用不同的查询)offset
),我觉得这是多余的,并且正在努力避免。
- 然后我想到捕捉entire结果集,并将其存储到
$_SESSION
,但在这种情况下,如果结果只是huge?它会以任何方式影响性能吗?
- 在与第二点类似的行中,我想到将结果写到一个文件中,这简直是垃圾! (我只是把它放在这里,作为一个观点。我知道这是非常糟糕的做事方式。)
我的问题:
A。我要实施上述哪种方法?哪一个更好?还有其他方法吗?我用谷歌搜索了一下,但我发现大多数例子都遵循上面的第1点。
B。我的问题1:我们如何依赖mysql结果的顺序?假设用户在一段时间后导航到第2页,我们如何确定在第二次期间,第一个页面的记录不会重复? (因为,我们正在做一个新的查询)..
C。 MySQL 资源到底是什么?我明白,一个mysql_query(..)
返回一个resource
。它是全局的吗?它维护对 PHP 脚本的不同调用之间的状态? (我可以将资源维护在$_SESSION
).
太感谢了! :-)
PS:我知道这是一个很长的问题。我只是试图以简洁的方式表达我脑海中的想法。
使用你的第一个建议。带有偏移量的那一个。这是进行分页的“标准”方式。将整个结果集放入会话中是一个坏主意,因为每个用户都有自己的私有数据副本。如果遇到性能问题,您可以随时添加缓存(memcache),这将使所有访问数据的用户受益。
MySQL 将始终以相同的方式生成您的数据。第 1 页中的记录出现在第 2 页上的唯一方法是,在用户从第 1 页导航到第 2 页之间插入新记录。换句话说:您无需担心。
对于 MySQL 来说,资源是一个指向结果集的指针。然后您可以对其进行操作(逐行获取数据、计算返回的行数等)。它不是全球性的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)