我一直在寻找解决办法,但是,唉,没什么。
目前,我的表从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/