日期:2014-05-16  浏览次数:21966 次

百万级别limit的优化
需要写一个脚本去取test表的数据 数据量为一百三十多万条数据 用php分批次执行 像这样一次执行一万条 但是还是很慢啊 有什么更好的办法优化一下吗 这个脚本只要一执行 cpu占用率立马飙到30% 以下是sql语句 
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 0,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 10000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 20000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 30000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 40000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 50000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 60000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 70000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 80000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 90000,10000
SELECT * FROM gt_long_keywords WHERE is_pin = 0 LIMIT 100000,10000

求指教


------解决方案--------------------
gt_long_keywords 表的主键是什么? 你期望的排序字段是什么?
------解决方案--------------------
这样load大批量数据是供前台缓存吧
------解决方案--------------------
select a.* from gt_long_keywords a inner join (
select id from gt_long_keywords where is_pin order by id limit 100000,10000
) b on a.id=b.id
------解决方案--------------------
或者预先把0得放到一张表里 然后去load这张表
------解决方案--------------------
可以使用线程+循环