你说 mysql 列举在线人数也是通过 while + fetch_array 循环处理, 于是结论是和文本技术中的 foreach 差不多. 不知道是不是这个意思.
如果是的话, SQL 是在 select 的时候可以筛选结果集的, 例如我要选择 forumid = 2, 最近 15 分钟内还有活动的人, 那么通过 WHERE 语句查询, 可以直接命中需要的结果. 所以即便有 6000 人在线, 但是显示分论坛在线列表的时候, 我能够只对选择出来的上百个结果进行循环.
但是文本呢 ? 不能用 WHERE 来限定结果集吧 ? (可能通过技术改造可以, 但是目前不行) 所以只得老老实实进行 6000 个 foreach 循环, 全部读一遍数据, 然后用 if 分析每一行存储的 forumid 是不是 2, lastvisit 是不是 < 15 min, 最后塞到结果集中, 而这一切都是 php 在作, 和 mysql 在 select 时候的 binary 级别执行, 效率哪个高, 不用我说了吧 ?
除非当有 200 个分论坛时候你开 400 个文件来分别记录每个论坛的情况了. (一个记录 member, 另一个是 guest), 否则不可能逃避 6000 个 foreach 的.
[ Last edited by LostButterfly on 2004-9-28 at 01:13 PM ] |