2011-04-30 138 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?

你可能會問,爲什麼是它有關?你描述了當你點擊下一頁時,你的查詢運行緩慢,當你點擊繼續。這可能是當你達到很大的偏移量時。我的猜測是你使用你的查詢來計算一個偏移量,然後你用它來獲取帶有限制偏移量查詢的相關記錄。那是對的嗎?如果是這樣,那麼你的其他查詢可能會從我提供的鏈接中受益(我不是該答案的作者,在信用到期時給予信用)。