mysql 大量数据查询速度慢,sql语句求解!

先说需求:sal_orders是一张订单表,需要查找出所有会员的vip_id和第一次与第二次购买时间间隔天数(购买时间为create_time,可能没有第二次购买),下面... 先说需求:
sal_orders 是一张订单表,需要查找出所有会员的vip_id和第一次与第二次购买时间间隔天数(购买时间为create_time,可能没有第二次购买),
下面这条sql,在数据只有几百条的时候还好,但几万条记录的时候,就会一直执行,根本停不下来……

写sql技能非常渣,求教大神,该怎样写才能满足需求?感谢!
展开
 我来答
lpchtsy
2015-07-21 · 超过14用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:48.1万
展开全部
这个问题和设计有关系, 简单的sql优化提升不了多少, 但是这个sql还是可以进一步优化的
利用索引, 用union all代替in, 如 select * from tab where id in (1,2), 可写成select * from tab where id = 1 union all
select * from tab where id = 2

但是上面的优化起不到根本效果, 如果100万 1000万数据怎么办, 难道每次都要全部查出来嘛, 那是不可能的, 而且你的页面也不能全部都展示出来! 所有需要换个思路, 如, 将一个会员的订单记录查询出来, 然后通过程序(java或者存储过程)算出时间差, 按照上面再计算下一个会员;
神崎橙
2015-07-21 · TA获得超过251个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:340万
展开全部
你可以试下在 vip_id ,create_time 上面建个组合索引
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式