您好,我正在阅读http://domasmituzas.files.wordpress.com/2011/09/mysqluc2008-mysql-web.pdf,发现“良好的分页实践”是使用WHERE,not OFFSET,LIMIT
有没有代码例子,讲解怎么做?

发布于 2013-05-27 13:49:10
我不是sql专家。但据我所知,WHERE子句指示在该特定TABLE上选择哪一行。这是在LIMIT子句之前首先执行的。
LIMIT子句限制SELECT语句返回的行数。因此,此子句在WHERE子句之后执行,从而得出WHERE比LIMIT更快的结论。
尽管如此,WHERE子句的PERFORMANCE仍然取决于条件的构成方式。
下面是我用于分页的内容:
SELECT *
FROM table T
WHERE T.Id > 100
LIMIT 100;而不是使用LIMIT/OFFSET。
SELECT *
FROM table T
LIMIT 100, 100;您可以清楚地看到大型表的优势。
发布于 2013-05-27 15:01:47
A better presentation提供了如何在不使用偏移量的情况下实现分页的解释和示例。
引用:
另一种解决方案是存储最后看到的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_sizehttps://stackoverflow.com/questions/16766866
复制相似问题