无敌sql优化

ouyangxiaolin 2015-12-04 10:05:49
select (count(*)+1) as pmNum
from (select ts.userId,sum(ts.literAvg*ts.dist)/sum(ts.dist+0) as pmLiterAvg
from t_data ts group by userId having pmLiterAvg > 1 order by pmLiterAvg asc ) pm
where pm.pmLiterAvg <
(select sum(literAvg*dist)/sum(dist+0) from t_data where userId =123 and literAvg>0 and dist>1)

执行计划
id select_type table type rows Extra
1 PRIMARY <derived2> ALL 61 Using where
3 SUBQUERY t_data ALL 401 Using where
2 DERIVED ts ALL 401 Using temporary; Using filesort
表数据在十万级别
...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangxiaolin 2015-12-04
  • 打赏
  • 举报
回复
有高手帮看看吗,怎么优化,三个all扫描。。。
ouyangxiaolin 2015-12-04
  • 打赏
  • 举报
回复
引用 5 楼 defonds 的回复:
[quote=引用 4 楼 defonds 的回复:] userId literAvg dist 这三个字段做一个 btree 联合索引,先优化子查询看看,一步一步来
此外sql 里尽量不要用函数,比如 sum,会不走索引[/quote] 嗯,我先看看
chenjsh_ 2015-12-04
  • 打赏
  • 举报
回复
表没给啊。中间公式计算太繁杂了
Defonds 2015-12-04
  • 打赏
  • 举报
回复
userId literAvg dist 这三个字段做一个 btree 联合索引,先优化子查询看看,一步一步来
Defonds 2015-12-04
  • 打赏
  • 举报
回复
引用 4 楼 defonds 的回复:
userId literAvg dist 这三个字段做一个 btree 联合索引,先优化子查询看看,一步一步来
此外sql 里尽量不要用函数,比如 sum,会不走索引
ouyangxiaolin 2015-12-04
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
t_data 的索引是什么情况的?
就主键是索引(id)
Defonds 2015-12-04
  • 打赏
  • 举报
回复
t_data 的索引是什么情况的?
网奇.net网络商城系统4.0 网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。 系统内置多套网络商城专业模板,适合开网上书店、花店、数码产品店、化妆品、手机店。网奇官方网站(http://www.wangqi.com)更不定时的推出新的精美模板。 系统特色功能: 1、同时支持Access和SqlServer数据库; 2、支持多语言、多模板 3、可定制缺货处理功能 4、支持附件销售功能 5、支持会员组批发功能 6、提供页面设计API函数 7、支持预付款功能 8、配送价格分地区按数学公式计算 9、商品支持多类别,可扩展更多的功能 10、支持在线备份数据库 11、支持无限级商品类别 12、支持在线支付接口 升级信息: 1、新增全新商城模板 2、支付方式添加网银支付外卡功能,适合对国外销售支付 3、添加上传文件写入路径的设置,方便国外服务器的使用 4、添加打印订单清单功能 5、增加了商品的最低购买量功能 6、优化程序,使商城内容更加容易在网络上被搜索到,方便做推广 7、修改了处理缓存的方法,使后台更新资料后,前台可以及时更新数据 更多功能特点可浏览网奇官方网站(http://www.wangqi.com) 如果您在使用过程中有任何问题,请登陆客服论坛,有专门工作人员为您解答. 地址:http://bbs.wangqi.com/Board.aspx?BoardID=27

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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