[求教]mysql查询语句优化,联表查询总数的优化

再看我一眼 2014-12-17 08:13:13
有两个表 a表,b表

a表大约40万条记录, 每条记录大约200个字段

b表大约35万条记录,每条记录大约150个字段 b表的这35万条记录对应a表中的35万条 .每一个b表的记录都可以在a表找到唯一的一条记录对应 关联字段是a.id= b.a_id

a表有一个状态字段 state

查询业务逻辑是这样的: 查询a表记录中state>1且在b表有对应的记录的记录,或者a表的state值为2(可以在b表没有对应记录)

查询语句如下:


SELECT
count(*)
FROM
a
LEFT JOIN b ON a.id = b.a_id
WHERE
a.state > 1
AND (b.id IS NOT NULL OR a.state = 2);



现在查询时间约1.1秒, 嫌慢

解释如下



求指点如何优化

谢谢
...全文
212 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-12-18
  • 打赏
  • 举报
回复
先在 a.state 上建个索引看看 a.state > 1 AND (b.id IS NOT NULL OR a.state = 2) 写作 a.state > 2 or (a.state = 2 and b.id IS NULL) 可能会快点

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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