sql >> Databáze >  >> RDS >> Mysql

Jak mohu urychlit dotaz MySQL s velkým posunem v klauzuli LIMIT?

Možná byste mohli vytvořit indexační tabulku, která poskytuje sekvenční klíč související s klíčem ve vaší cílové tabulce. Poté můžete tuto indexační tabulku připojit ke své cílové tabulce a použít klauzuli where k efektivnějšímu získání požadovaných řádků.

#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. Jak nejprve třídit podle čísel pomocí dotazu Oracle SQL?

  2. Jak opravit „Procedura očekává parametr ‚@statement‘ typu ‚ntext/nchar/nvarchar‘.“ Chyba na serveru SQL Server

  3. Nastavení a použití pgmemcache

  4. 3 způsoby, jak najít řádky, které obsahují malá písmena v MySQL