您好,登錄后才能下訂單哦!
本篇文章為大家展示了mysql 中怎么實現limit分頁查詢,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
優化方法1(讓分頁操作在索引中進行):
一般表中經常作為條件查詢的列都會建立索引,例如如下查詢
Sql代碼
SELECT msg_id, msg_content FROM message ORDER BY gmt_create desc LIMIT 100, 20;
可以寫成如下方式
Sql代碼
SELECT msg_id, msg_content FROM message
INNER JOIN (
SELECT msg_id FROM message
ORDER BY gmt_create LIMIT 100, 20
) AS page USING(msg_id);
這樣當前查詢頁的內容就只會在索引中進行,當得到當前頁的msg_id再統一通過一個INNER JOIN得到最終要得到的數據詳情,避免了對大量數據詳情進行操作的消耗。當然JOIN操作也可以通過子查詢實現,不過書中介紹5.6之前版本的 mysql相比子查詢還是優先使用JOIN。
優化方法2(顯式指定要查詢的索引列范圍)
例如方法一中的gmt_create是建立索引的列,而且你也知道要查詢的時間范圍,這樣你就可以通過如下查詢語句:
Sql代碼
SELECT msg_id, msg_content FROM message
WHERE gmt_create BETWEEN #startTime# AND #endTime#
ORDER BY gmt_create desc
這樣數據庫通過一個范圍查詢就可以得到想要的數據。
優化方法3(OFFSET作為查詢條件顯式指定)
例子還是如上,我們可以在查詢參數中顯式指定一個查詢時間,叫做lastVisitTime吧。我們查詢第一頁可以用如下語句:
Sql代碼
SELECT msg_id, msg_content FROM message
ORDER BY gmt_create desc
LIMIT 20
我們把讀出來的數據的最后一條數據的gmt_create字段記錄在lastVisitTime字段中,那么后邊頁的查詢就可以用如下語句實現:
Sql代碼
SELECT msg_id, msg_content FROM message
WHERE gmt_create < #lastVisitTime#
ORDER BY gmt_create desc
LIMIT 20;
這種查詢方式,無論你查詢多少頁,分頁都不會是影響效率的因素。
上述內容就是mysql 中怎么實現limit分頁查詢,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。