sql >> Database >  >> RDS >> Mysql

Hoe kan ik een MySQL-query versnellen met een grote offset in de LIMIT-clausule?

Misschien kunt u een indexeringstabel maken die een sequentiële sleutel biedt die betrekking heeft op de sleutel in uw doeltabel. Vervolgens kunt u deze indexeringstabel toevoegen aan uw doeltabel en een where-clausule gebruiken om efficiënter de gewenste rijen te krijgen.

#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. Een datetime-kolom in SQL Server nodig die automatisch wordt bijgewerkt wanneer de record wordt gewijzigd

  2. Inzicht in 'datetimeoffset' opslaggrootte in SQL Server

  3. Wat is de beste manier om mijn opgeslagen procedures op de SQL-server te beheren?

  4. Hoge beschikbaarheid van PostgreSQL met master-slave- en master-masterarchitecturen