2011-04-30 79 views
1

我有这个查询来选择最小的ID。它似乎在前几次点击中运行良好,但当我继续点击调用此查询的按钮时,它会变得非常缓慢。mysql select min性能问题

此查询的任何解决方法?

"select min(t1.blog_id) as min_id 
FROM 
     (SELECT blog_id FROM myblogs_view 
     where blog_id<'$id' ORDER BY blog_id DESC LIMIT 10) as t1"; 
+0

“继续点击”是什么意思?这个查询是否每次都被执行_exactly_,或者做了什么改变? – 2011-04-30 10:00:30

+0

这是我的下一页获取最小ID的查询。所以每次点击下一页按钮时,都会执行此查询。 – drew 2011-04-30 10:04:08

回答

1

尝试用

SELECT MIN(blog_id) AS min_id 
FROM myblogs_view 
WHERE blog_id < '$id' 
GROUP BY blog_id 

你对blog_id列的索引?

通常,当您处理缓慢查询时,可以使用EXPLAIN命令查看MySQL如何执行查询。

+0

ok.t​​hanks。会做 – drew 2011-04-30 10:17:06

0

有一两件事我想补充:如果您使用查询分页,你应该看看How can I speed up a MySQL query with a large offset in the LIMIT clause?

你可能会问,为什么是它有关?你描述了当你点击下一页时,你的查询运行缓慢,当你点击继续。这可能是当你达到很大的偏移量时。我的猜测是你使用你的查询来计算一个偏移量,然后你用它来获取带有限制偏移量查询的相关记录。那是对的吗?如果是这样,那么你的其他查询可能会从我提供的链接中受益(我不是该答案的作者,在信用到期时给予信用)。