作者postmaster (post master)
看板PHP
标题Re: [请益] mysql 上一笔, 下一笔?
时间Wed Jun 14 13:28:36 2006
※ 引述《JoeHorn (狮子男)》之铭言:
: ※ 引述《alpe (自由的风)》之铭言:: : id int unsigned auto-increment,
: : 不过有可能会被删掉. 所以不见的连号,
: : 现在只有传来一个 id 的情况下,
: : 我该怎麽找出它的 上一笔 /下一笔啊...
: : 不会要我全部抓一遍吧.
: 推 alpe:我用id做编号. 现在抓特定一笔 ID 跟它上下 06/14 12:13
: → alpe:limit 在可能不连号的情况下 XD 不是你想的那样啊 06/14 12:15
: → alpe:limit "offset",rows 06/14 12:16
: 这跟连不连号没关系, 用 LIMIT 去取第一个比这个 ID 大的编号不难吧?
: 取上一笔:
: $sql = "SELECT * FROM table WHERE id < $id ORDER BY id DESC LIMIT 1 ;";
: 取下一笔:
: $sql = "SELECT * FROM table WHERE id > $id ORDER BY id ASC LIMIT 1 ;";
: =======
: 题外话:
: 有 LIMIT 给你用, 你就该笑了, SQL server 2000 不吃这种东西... 囧rz
假设是 view.php?id=$id ,通常就是如下:
文章内容
上一笔 | 下一笔
这样至少要执行3次SQL查询。
当1万人次时,那就要3万次SQL查询,只为了制造出上一笔、下一笔的连结
当10万人次时,也就是30万次SQL查询了。
重点在於
辛苦制造出上一笔、下一笔的连结,使用者也不一定会去点它。
不管使用者会不会点选它,就已经事先「付出」了一定量的系统资源。
可以参考一下phpbb对於这种情形的处理。
虽然phpbb将原来需要3万次SQL查询、减为2万次、甚至1万次。
但呈现上还是有稍许bug
至於资料库取出几笔的部分。
可以采class套件的方式来实作。
不论是MySQL、MSSQL、Oracle ... 这些都是可以处理的。
--
世上没有陌生人,只有还没认识的朋友。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.23.130