Heim >Datenbank >MySQL-Tutorial >So implementieren Sie eine Paging-Abfrage in MySQL
MySQL-Paging-Abfragemethode: 1. Verwenden Sie bestimmte Felder anstelle von [*] 3. Verwenden Sie [zwischen ... und], die ID muss kontinuierlich erhöht werden Eintrag auf der vorherigen Seite.
Mysql-Paging-Abfragemethode:
Kurze Beschreibung
Seitenabfragen werden normalerweise in MySQL durch Limit #{limit}, #{offset} durchgeführt.
Wenn die Tabelle viele Datensätze enthält und die Anzahl der Seiten (#{limit}) groß ist, wird die Effizienz der Paging-Abfrage langsamer.
Der Grund für die Verlangsamung liegt darin, dass bei der Seitenabfrage zuerst die Limit- und Offset-Datensätze abgefragt werden und dann die nachfolgenden Offset-Datensätze abgefangen werden.
In diesem Artikel wird die tatsächliche 140-Millionen-Tabelle big_table als Beispiel verwendet, um aufzuzeichnen, wie Paging-Abfragen optimiert werden.
Testanleitung
Testtabelle: big_table, Datenvolumen: 140 Millionen.
Original SQL (4500 ms)
-- 原始分页查询,耗时:4500ms select * from big_table limit 2000000,10;
Gründe für die Langsamkeit:
1. Die Abfragebedingung ist *
2. Limit = 2000000 ist zu groß
Optimierung 1 (empfohlen): Verwenden Sie bestimmte Felder anstelle von * (1600ms)
-- 用明确字段代替*,耗时:1600ms select id,uid,media_id,media_name,news_id,comment from big_table limit 2000000,10;
Optimierung 2: Zuerst den Index durchsuchen (450ms)
-- 方法1:先对索引进行分页查询,耗时:450ms select * from big_table AS h inner join (select id from big_table limit 2000000,10) AS ss on h.id = ss.id; -- 方法2:先查询出起始位置的索引,耗时:450ms select * from big_table where id > ( select id from big_table limit 2000000,1 ) limit 10;
Optimierung 3: zwischen … und (5ms)
Einschränkung: ID muss kontinuierlich steigend sein.
-- 上一页保留最后一条记录所在id,耗时:5ms select * from big_table where id between 4882489 and 4882489 + 10 ;
Optimierung 4 (empfohlen): Behalten Sie die ID des Datensatzes auf der vorherigen Seite bei (5 ms)
Einschränkungen: Sie müssen die ID des letzten Datensatzes auf der vorherigen Seite beibehalten
-- 上一页需要保留最后一条记录所在id,耗时:5ms select * from big_table where id > 4882488 limit 10;
Weitere verwandte Themen kostenlos Lernempfehlungen: MySQL-Tutorial(Video)
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine Paging-Abfrage in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!