问题描述
- 关于mysql优化连表查询的问题
-
mysql中查询两张表中的数据,一张表的数据量大,一张数据量小,有一个id关联,但是这个id在两张表都不是主键,怎么
查才能速度快呢?sql大概在下面,数据a表10w条,b表几十条
select * from a a ,b b
where
a.c_id = b.c_id ORDER BY a.cid limit 1,20 大概要0.8秒,如果去掉排序只要3ms,试过用inner join ,但是有条件的情况下也很慢
解决方案
1、加索引
2、避免用select * ,如果可以,就指定具体的使用字段,以便于用到索引
解决方案二:
select * from a where a.c_id in (select c_id from b) order by c_id limit 1,20
同时对a表的c_id加索引,如果b的c_id数据量不大,应该是不需要的索引
解决方案三:
select * from a where a.c_id in (select c_id from b) order by c_id limit 1,20
同时对a表的c_id加索引,如果b的c_id数据量不大,应该是不需要的索引
时间: 2025-01-12 13:57:50