mysql关于order by效率很慢的问题

ouyangxiaolin 2015-12-08 03:32:21
select
ts.uploadDate,
tv.carNumber as CarNumber,
tv.id as VinId,tu.nick as Nick,
tu.userName as UserName,
tu.id as UserId,
ts.id as Id
from t_travel_data_summarize ts
left outer join t_vin tv on ts.vinId = tv.id
left join t_user tu on ts.userId = tu.id
where Length(tv.carNumber) > 7 and tv.carNumber !='无车牌' and tv.carNumber != '测试车'
group by ts.vinId order by ts.id desc limit 6

rows
1 SIMPLE ts index index_vinid PRIMARY 4 6 Using temporary
1 SIMPLE tv eq_ref PRIMARY PRIMARY 4 qcwp_auto_data.ts.VinId 1 Using where
1 SIMPLE tu eq_ref PRIMARY PRIMARY 4 qcwp_auto_data.ts.UserId 1
查询时间接近1分钟,把order by去掉瞬间出来,有大神可以解答下吗
...全文
1484 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
李睿_Lee 2015-12-13
  • 打赏
  • 举报
回复
ts.id这个字段有索引吗?有的话确实比较奇怪。
ouyangxiaolin 2015-12-09
  • 打赏
  • 举报
回复
去掉order by立马出来
ouyangxiaolin 2015-12-09
  • 打赏
  • 举报
回复
引用 1 楼 xiaofanku 的回复:
如果对一个很大的结果集应用函数过滤确是会反应不实时. 先确认哪三个条件: 1.Length(tv.carNumber) > 7 2.tv.carNumber !='无车牌' 3.tv.carNumber != '测试车' 哪个是造时慢的主因,能加索引的加索引,不能加索引的用子查询把大结果集缩小
我把这3个条件去掉,仍然一样。t_travel_data_summarize数据50w,有一个主键索引和vinid,因为已经走了vinid索引, 所以order by ts.id慢,除了建组合索引还有什么办法吗
街头小贩 2015-12-08
  • 打赏
  • 举报
回复
如果对一个很大的结果集应用函数过滤确是会反应不实时. 先确认哪三个条件: 1.Length(tv.carNumber) > 7 2.tv.carNumber !='无车牌' 3.tv.carNumber != '测试车' 哪个是造时慢的主因,能加索引的加索引,不能加索引的用子查询把大结果集缩小

25,980

社区成员

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

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