2013-05-05 69 views
1

假设我有一个显示博客文章的网站。在这个网页上有一个评论部分,但它隐藏在页面加载。然而,在用户的位置显示评论计数,如果用户点击计数,则会调用ajax调用来加载所有评论。在通过PK搜索的查询中受益限制

通常我会做一些额外的编码来从页面获取评论计数,然后将其发送到后端,以便我可以对我的查询进行限制。因此,而不是这个......

SELECT * FROM comments INNER JOIN post WHERE post.id = 1 

我能做到这一点...

SELECT * FROM comments INNER JOIN post WHERE post.id = 1 LIMIT 15 

所以,现在我实现了这一点,我想知道,是有一个查询的任何的好处,通过主键搜索故意告诉查询行可能在主键上?我做了SQL EXPLAIN,但没有限制,但它们是一样的。我主要关注的问题和我要问的原因是b/c 我想确保查询不会执行全表扫描,这就是为什么我总是有添加限制的习惯。

+0

查询计划可能是一样的,但是你有没有注意到在执行时间任何区别,或有多少元组中读取?也更可能你指的是'FK'(外键),因为主键是唯一的,只接受一次出现每桌 – vol7ron 2013-06-03 18:59:56

+1

@gmustudent你能请注明不同的答案吗? – Kermit 2013-06-03 20:02:38

回答

-6

你想限制结果集您的加入结果集......你也不想猜测LIMIT是什么,因为记录将发生改变。返回结果集的一个子集是有成本的。

+1

非常真实。子集部分真的让我思考。谢谢! – gmustudent 2013-05-05 03:51:29

+0

的鼻子,你的答案是没有那么糟糕,我真的不明白为什么它已经downvoted这么多... – Sebas 2013-06-03 19:24:28

+1

我不认为它回答的问题都做。它应该是一个评论。 – Kermit 2013-06-03 19:25:46

5

这在许多层面上都是错误的。您要添加的,只是本身工作正常的查询的-relatively- inmense开销(即使它需要一些整理:见比尔的答案)

如果你建立一个适当的查询(和适当的模型)你不会有任何性能问题。通过尝试这样的小动作你要

1-必须在一段时间内性能问题(见优异MySQL的性能博客的article有关说明和限制优化问题的顺序)

2-做出在你的代码中,意大利面条(我首先想知道你的代码是“这是为什么?”),而且,这样的事情总结起来,最后,这是很多“噪音”。 ,这是我的建议)

3-会有意想不到的效果(如果有一种是你的2个查询之间出现突然的16条评论吗?)

这是来自一个好意,但我认为这是一个坏主意。

+1

这比接受的更精确。 – Walter 2013-06-03 23:17:54

相关问题