使用具有大偏移量的 LIMIT 子句的 MySQL 查询可能会遇到严重的性能问题。为了应对这一挑战,请考虑以下优化技术:
创建一个索引表,将顺序键映射到主键值,而不是使用 LIMIT 子句直接获取行。目标表。这使您可以使用 INNER JOIN 和 WHERE 子句高效地检索数据。
步骤:
创建索引表:
CREATE TABLE seq ( seq_no int NOT NULL AUTO_INCREMENT, id int NOT NULL, PRIMARY KEY(seq_no), UNIQUE(id) );
填充索引表:
TRUNCATE seq; INSERT INTO seq (id) SELECT id FROM mytable ORDER BY id;
从以下位置检索数据目标表:
SELECT mytable.* FROM mytable INNER JOIN seq USING(id) WHERE seq.seq_no BETWEEN 1000000 AND 1000999;
通过利用此方法,您可以显着提高具有大 LIMIT 偏移量的查询的性能,使您能够高效地检索数据。
以上是如何优化具有大 LIMIT 偏移量的 MySQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!