请教大家一个问题:
我要在Mysql上面对一个内容表(contents)做分页,分页的Sql如下:
SELECT id, title, author FROM contents WHERE id <= (SELECT id FROM contents ORDER BY id DESC LIMIT 1 OFFSET 30050) ORDER BY id DESC LIMIT 20;
其中我将ID这个字段设置为PRIMARY KEY并添加了额外的索引(根据
http://stackoverflow.com/a/511963 )。
Sql也是根据网上的说法“子查询使用索引所以速度快”改的。但是我发现,当将ID设置成PRIMARY KEY的时候,我从offset 30050查询要4.7秒,但是ID删除PRIMARY KEY之后,整体查询只要0.02秒,性能提升了2个数量级,这是什么原因?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/155421
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.