SQL分页过多时, 如何优化?

SQL分页过多时(例如 limit 1000000, 20), 效率会明显降低下, 如何优化? 这里以mysql为例

阅读 2.8k
3 个回答

SELECT * FROM product WHERE ID > =(select id from product limit 1000000, 1) limit 20 ;

新手上路,请多包涵

SELECT * FROM product WHERE ID > = (select id from product limit 1000000, 1) limit 20 ;

我这里有一个解决方案。这是以前看资料学习到的,具体在哪里忘记了,如果有更好的想法,可以交流一下。
创建一个索引表,它提供了与目标表中的键相关的顺序关系, 可以将此索引表连接到目标表,并使用where子句更高效地获取所需的行。

CREATE TABLE test (
   test_no int not null auto_increment,
   id int not null,
   primary key(test_no),
   unique(id)
);

TRUNCATE test;
INSERT INTO test (id) SELECT id FROM mytable ORDER BY id;

SELECT mytable.* 
FROM mytable 
INNER JOIN seq USING(id)
WHERE test.test_no BETWEEN 1000000 AND 1000020;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进