通过PK搜索查询的LIMIT是有益的

gmu*_*ent 1 mysql sql join limit

假设我有一个显示博客帖子的网站.在这个网页上有一个评论部分,但它在页面加载时隐藏.但是,为用户显示注释计数,如果用户单击计数,则会调用ajax调用来加载所有注释.

通常我会做一些额外的编码来从页面中获取注释计数,然后将其发送到后端,这样我就可以限制我的查询.而不是这个......

SELECT * FROM comments INNER JOIN post WHERE post.id = 1
Run Code Online (Sandbox Code Playgroud)

我可以做这个...

SELECT * FROM comments INNER JOIN post WHERE post.id = 1 LIMIT 15
Run Code Online (Sandbox Code Playgroud)

所以现在我已经实现了这个我想知道,对于通过主键搜索故意告诉查询如何在主键上行的查询是否有任何好处?我做了一个带有和没有限制的SQL EXPLAIN,但它们是相同的.我主要担心的是我问这个问题的原因是b/c 我想确保查询不进行全表扫描,这就是为什么我总是养成添加限制的习惯.

Seb*_*bas 5

这在许多层面都是错误的.你为一个只能单独工作的查询添加一个相对较小的开销(即使它需要一些完成:见比尔的答案)

如果您构建正确的查询(以及正确的模型),则不会出现任何性能问题.通过尝试这样的小技巧,你会去

1-在某个时候出现性能问题(请参阅优秀的mysql性能博客文章关于desc和限制优化器问题的顺序)

2-在你的代码中制作一个意大利面条(我想知道你的代码首先是:"为什么会这样?"而且,这样的事情加起来,最后,这是很多"噪音".到主线,这是我的建议)

3-有意想不到的结果(如果你的2个查询之间突然出现第16条评论怎么办?)

这是出于好意,但我认为这是一个坏主意.