百万级别limit的优化

wolf13223850700 2011-12-06 05:48:59
需要写一个脚本去取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

求指教
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小蝸牛 2011-12-07
  • 打赏
  • 举报
回复
可以使用线程+循环
wolf13223850700 2011-12-07
  • 打赏
  • 举报
回复
ACMAIN_CHM 果然很好使 哈哈 但是sql好像狼兄忘了加条件了 应该是这样的吧
SELECT a. * FROM gt_long_keywords a
INNER JOIN (
SELECT id
FROM gt_long_keywords
WHERE is_pin =0
ORDER BY id
LIMIT 100000 , 10000
)b ON a.id = b.id
rucypli 2011-12-06
  • 打赏
  • 举报
回复
或者预先把0得放到一张表里 然后去load这张表
ACMAIN_CHM 2011-12-06
  • 打赏
  • 举报
回复
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
wolf13223850700 2011-12-06
  • 打赏
  • 举报
回复
主键是就是 id 按id正序排列即可
rucypli 2011-12-06
  • 打赏
  • 举报
回复
这样load大批量数据是供前台缓存吧
ACMAIN_CHM 2011-12-06
  • 打赏
  • 举报
回复
gt_long_keywords 表的主键是什么? 你期望的排序字段是什么?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧