0

嗨,我正在阅读http://domasmituzas.files.wordpress.com/2011/09/mysqluc2008-mysql-web.pdf 并发现“良好的分页实践”是 WHERE 而不是 OFFSET, LIMIT

任何代码示例,解释如何做?

在此处输入图像描述

4

2 回答 2

1

我不是 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;

您可以清楚地看到大桌子的优势。

于 2013-05-27T05:49:10.280 回答
1

提供了更好的演示文稿,其中包含如何在不使用 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
于 2013-05-27T07:01:47.357 回答