嗨,我正在阅读http://domasmituzas.files.wordpress.com/2011/09/mysqluc2008-mysql-web.pdf 并发现“良好的分页实践”是 WHERE 而不是 OFFSET, LIMIT
任何代码示例,解释如何做?
嗨,我正在阅读http://domasmituzas.files.wordpress.com/2011/09/mysqluc2008-mysql-web.pdf 并发现“良好的分页实践”是 WHERE 而不是 OFFSET, LIMIT
任何代码示例,解释如何做?
我不是 sql 大师。但据我所知,WHERE
从句指示要在该特定TABLE
. 这是在LIMIT
子句之前首先执行的。
该LIMIT
子句限制语句要返回的行数SELECT
。所以这个子句是在WHERE
子句之后执行的,它的结论WHERE
是比LIMIT
.
WHERE
条款的表现仍然取决于你如何形成你的条件。
这是我用于分页的内容:
SELECT *
FROM table T
WHERE T.Id > 100
LIMIT 100;
而不是使用LIMIT
/ OFFSET
。
SELECT *
FROM table T
LIMIT 100, 100;
您可以清楚地看到大桌子的优势。
提供了更好的演示文稿,其中包含如何在不使用 OFFSET 的情况下实现分页的说明和示例。
引号:
较大的 OFFSET 将增加活动数据集,MySQL 必须将永远不会返回给调用者的数据带入内存。
另一种解决方案是存储最后一次看到的 id。对于下一页http://domain.com/forum?page=2&last_seen=100&dir=next,查询是:
SELECT ... WHERE id < 100 /* last_seen */ BY id ORDER BY DESC LIMIT $page_size
对于上一页:http://domain.com/forum?page=1&last_seen=98&dir=prev:
SELECT ... WHERE id > 98 /* last_seen */ ORDER BY id ASC LIMIT $page_size