我有一个巨大的表(> 10亿行),并且想选择第n行(例如,第1亿行),如果我使用此查询:
SELECT * FROM table ORDER BY indexed_column ASC LIMIT 1 OFFSET 100,000,000
,
结果还可以,但性能不好!因为此查询应扫描100,000,000行以选择第100万行,所以该表将在此过程中被锁定。
是否有任何最优查询在MySQL中选择第n行?
您可以将offset关键字替换为limit,并强制使用索引以获得更好的结果。
SELECT * FROM table FORCE INDEX (index_name) ORDER BY indexed_column ASC LIMIT 100000000, 1;
性能应该更好,但是您需要检查多少。