我有posts
表中有10k行,我想通過它創建分頁。所以,我對於這一目的的一個查詢:如何提高MySQL中的限制條款
SELECT post_id
FROM posts
LIMIT 0, 10;
當我Explain
該查詢,我得到了一個結果:
所以我不明白爲什麼MySQL的需要遍歷通9976用於查找10個第一行的行?如果有人幫助我優化此查詢,我將非常感激。
我也知道這話題MySQL ORDER BY/LIMIT performance: late row lookups,但即使我修改查詢到下一個問題仍然存在:
SELECT t.post_id
FROM (
SELECT post_id
FROM posts
ORDER BY
post_id
LIMIT 0, 10
) q
JOIN posts t
ON q.post_id = t.post_id
更新
@ pala_的解決方案適用於上述簡單情況,但現在正在測試更復雜的查詢時使用inner join
。我的目的是加入評論表和帖子表,不幸的是,當我解釋新的查詢仍然遍歷9976行。
Select comm.comment_id
from comments as comm
inner join (
SELECT post_id
FROM posts
ORDER BY post_id
LIMIT 0, 10
) as paged_post on comm.post_id = paged_post.post_id;
你有一些想法是什麼原因導致這種MySQL行爲?
爲什麼你需要一個衍生零件並加入爲什麼不只是一個查詢與'選擇..limit ' –
多數民衆贊成他的第一個查詢,他的比較 –