Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę przyspieszyć zapytanie MySQL z dużym przesunięciem w klauzuli LIMIT?

Być może mógłbyś utworzyć tabelę indeksowania, która zawiera klucz sekwencyjny odnoszący się do klucza w tabeli docelowej. Następnie możesz dołączyć tę tabelę indeksowania do tabeli docelowej i użyć klauzuli WHERE, aby wydajniej uzyskać żądane wiersze.

#create table to store sequences
CREATE TABLE seq (
   seq_no int not null auto_increment,
   id int not null,
   primary key(seq_no),
   unique(id)
);

#create the sequence
TRUNCATE seq;
INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;

#now get 1000 rows from offset 1000000
SELECT mytable.* 
FROM mytable 
INNER JOIN seq USING(id)
WHERE seq.seq_no BETWEEN 1000000 AND 1000999;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy Python obsługuje przygotowane instrukcje MySQL?

  2. Zainstaluj wiele instancji MySQL na serwerze Linux — użyj osobnego pliku konfiguracyjnego MySQL

  3. Dodaj sortowanie stronicowania i wyszukiwanie za pomocą jquery datatable

  4. Pobieranie nieprzetworzonego ciągu zapytania SQL z przygotowanych instrukcji PDO

  5. SQL:Znajdź maksymalny rekord na grupę