首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免偏移,在哪里分页应该是什么样子的?

避免偏移,在哪里分页应该是什么样子的?
EN

Stack Overflow用户
提问于 2013-05-27 13:35:38
回答 2查看 80关注 0票数 0

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

有没有代码例子,讲解怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-27 13:49:10

我不是sql专家。但据我所知,WHERE子句指示在该特定TABLE上选择哪一行。这是在LIMIT子句之前首先执行的。

LIMIT子句限制SELECT语句返回的行数。因此,此子句在WHERE子句之后执行,从而得出WHERELIMIT更快的结论。

尽管如此,WHERE子句的PERFORMANCE仍然取决于条件的构成方式。

下面是我用于分页的内容:

代码语言:javascript
复制
SELECT *
    FROM table T
    WHERE T.Id > 100
    LIMIT 100;

而不是使用LIMIT/OFFSET

代码语言:javascript
复制
SELECT *
    FROM table T
    LIMIT 100, 100;

您可以清楚地看到大型表的优势。

票数 1
EN

Stack Overflow用户

发布于 2013-05-27 15:01:47

A better presentation提供了如何在不使用偏移量的情况下实现分页的解释和示例。

引用:

另一种解决方案是存储最后看到的id。对于下一页http://domain.com/forum?page=2&last_seen=100&dir=next,查询为:

代码语言:javascript
复制
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

代码语言:javascript
复制
SELECT ... WHERE id > 98 /* last_seen */ ORDER BY id ASC LIMIT $page_size
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16766866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档