我一直在寻找解决办法,但是,唉,没什么。
目前,我的表从5000个不同的源推送5800000行。例如:

CREATE TABLE stores(
  store_id INT UNSIGNED PRIMARY_KEY AUTO_INCREMENT,
  name VARCHAR(255)
);

CREATE TABLE articles(
  article_id INT UNSIGNED PRIMARY_KEY AUTO_INCREMENT
  article_name CHAR(80),
  article_price INT UNSIGNED,
  store_id INT UNSIGNED
);

好吧,我已经做了如下索引:
CREATE INDEX article ON articles(store_id,name);

我以为我做的是防弹的,我猜不是。
当我搜索大型数据集,200000篇文章时,我发布:
  SELECT article_name,
         article_price
    FROM articles
   WHERE store_id = $id
ORDER BY article_name
   LIMIT 100000,20;

而且回复时间也很长。请帮忙?:秒

最佳答案

是的,我想出来了,因为没有人会帮我:D
我的想法如下,当我需要某一页时,我会做如下的事情:
创建临时表结果(row_id,article_id);
设置@行:=0;
INSERT INTO result SELECT@row:=(@row+1),文章id FROM articles ORDER BY$sort$ORDER;
然后是一个简单的SELECT/JOIN:
从结果中选择*
result.article_id=articles.article_id上的LEFT JOIN articles
其中row_id>=$from和row_id<$to;
干杯。。。

关于sql - MYSQL大LIMIT偏移量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4404827/

10-12 21:55