首页 新闻 会员 周边 捐助

MySql 两张表分别有字段做排序 效率很慢

0
悬赏园豆:50 [待解决问题]

select * from shopgoods order by MarketNumber
LIMIT 0,20 ;
-- 0.050 秒

select * from supplier order by BusinessActivities
LIMIT 0,20 ;
-- 0.050 秒

select * from shopgoods force index(MarketNumber)
left join supplier on shopgoods.SupplierId=supplier.Id
order by shopgoods.MarketNumber
LIMIT 0,20 ;
-- 0.098 秒

select * from shopgoods
left join supplier on shopgoods.SupplierId=supplier.Id
order by shopgoods.MarketNumber,supplier.BusinessActivities
LIMIT 0,20 ;
-- 1.439 秒
怎么优化 最后这条? 索引都加了 这个 才不到 1万的数据量

老-顾的主页 老-顾 | 初学一级 | 园豆:152
提问于:2019-05-18 17:18
< >
分享
所有回答(5)
0

select查询字段不要全部查询出来,用到那个查那个

陈彦斌 | 园豆:402 (菜鸟二级) | 2019-05-18 17:41

我试过了 把* 换成ID 就这个一个字段 也是这个速度 没有太大效果

支持(0) 反对(0) 老-顾 | 园豆:152 (初学一级) | 2019-05-18 17:43

@老-顾 索引不是创建越多越好,经常用到的字段才用索引

支持(0) 反对(0) 陈彦斌 | 园豆:402 (菜鸟二级) | 2019-05-18 17:44

@陈彦斌: 这个知道的 没有很多索引, 我想问题可能出在 我这个查询语句只用到了一个索引 但是我用了2个字段去排序 并且还是不同的表的字段,

支持(0) 反对(0) 老-顾 | 园豆:152 (初学一级) | 2019-05-18 17:46

你看看我新附的 执行计划

支持(0) 反对(0) 老-顾 | 园豆:152 (初学一级) | 2019-05-18 17:48
0

建议分别去掉2个排序字段对比一下,看哪个字段的排序开销大

dudu | 园豆:30948 (高人七级) | 2019-05-18 19:51
0

SupplierId加上索引,另外建议小表去join大表.

sky_net | 园豆:10 (初学一级) | 2019-05-20 10:40
0

还是shopgood这个表查得有问题 type 是all 最差的 ref 都没有值。你往shopgood里面放的什么索引

幻xiang | 园豆:197 (初学一级) | 2019-05-23 15:46
0

order by 那里,如果不是特别需要的,改成order by一个就可以了。

gw2010 | 园豆:1487 (小虾三级) | 2019-05-28 14:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册