这个mysql语句要怎么写啊?left join + count(*),分页查询语句好慢。

forai 发布于 2017/02/17 16:33
阅读 1K+
收藏 2

分页查询的语句,三表关联如下:

SELECT t1.* FROM td_user_app t1 LEFT JOIN ts_area t3 ON t1.area_id=t3.id LEFT JOIN td_user_app_level t2 ON t1.level_id = t2.id limit 0,15

 

框架进行分页查询统计记录总数的时候,生成的语句是这个,查询速度非常慢。

SELECT COUNT(*) FROM td_user_app t1 LEFT JOIN ts_area t3 ON t1.area_id=t3.id LEFT JOIN td_user_app_level t2 ON t1.level_id = t2.id 

 

 

记录总数
td_user_app 28465
ts_area 3270
td_user_app_level 7

请帮忙看一下,这个sql语句要如何优化。谢谢!

加载中
0
battyman
battyman

这个应该不像是语句的问题,这点数据量进行leftjoin操作若产生性能问题的话,可能是没有建索引,再者就是buffer的设置,my.cnf中有

0
z
zhu小伍

可以通过建立索引优化查询速度

0
祝网
祝网

现在的人,怎么都喜欢用JOIN来查询呢

0
大写我去
大写我去

用join 表名 on 。。。连表查 left 是左联接 再有就是我觉得你写的语句无法实现分页功能

0
forai
forai

引用来自“祝网”的评论

现在的人,怎么都喜欢用JOIN来查询呢

那要怎么写?

0
forai
forai

引用来自“大写我去”的评论

用join 表名 on 。。。连表查 left 是左联接 再有就是我觉得你写的语句无法实现分页功能

那要怎么写呢 兄弟 ? 

0
fxhover
fxhover

先使用 explain分析查询语句,看看使用索引的情况。

0
forai
forai

引用来自“fxhover”的评论

先使用 explain分析查询语句,看看使用索引的情况。

谢谢兄弟,我试试这个方法。

0
forai
forai

问题解决了。索引没问题,是同事把t1表里面的area_id字段弄错了。ts_area里面是varchar。t1弄成int类型了。

返回顶部
顶部