MySQL SQL优化:SQL爬虫翻页优化
赶着这几天有些时间,把前段时间优化的几条SQL经验分享并总结下,以飨来者。第一个要分享的是对MyISAM优化limit分页。背景来自公司某个业务系统提供给爬虫抓取数据。基础信息:MySQL版本是5.1,引擎为MyISAM,原始SQL内容大致如下:注:为避免敏感信息,将很多字段变为col,但不影响阅读 :-)SELECT Aa.* ,
B.col,
B.col,
C.col,
C.col
FROM
(SELECT A.col,
A.col,
A.col,
A.col ,
A.col,
A.col,
A.col,
A.col,
A.col,
A.col,
A.col ,
A.col
FROM A
WHERE A.class1id = 1000000
AND 1
ORDER BY A.oktime DESC LIMIT 286660,20) Aa
LEFT JOIN B ON Aa.class2id=B.id
LEFT JOIN C ON Aa.username=C.username
这已经是条优化过的SQL,我们观察单次执行的影响:1. CPU抖动:
.jpg)
.jpg)
SELECT Aa.* ,
B.col,
B.col,
C.col,
C.col
FROM
(SELECT A.col,
A.col,
A.col,
A.col ,
A.col,
A.col,
A.col,
A.col,
A.col,
A.col,
A.col ,
A.col
FROM A
INNER JOIN
(SELECT askid
FROM solve_answerinfo use INDEX (idx_1)
WHERE class1id = 1000000
ORDER BY oktime DESC LIMIT 389300,20) aaa USING (askid)) Aa
LEFT B ON Aa.class2id=B.id
LEFT JOIN C ON Aa.username=C.username;配套的索引策略:
create index idx_1 on solve_answerinfo (oktime,askid,class1id);
优化后的效果:1 cpu抖动
具体的优化方法,可以参考我之前的文章:1 InnoDB二级索引自动添加主键 2 优化limit分页
Good Luck!
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。