目前遇到瓶颈,一个 sql 要 20s 左右 表结构是这样的
A id B id a_id
现在要查询 A 表有,但是 B 表没有的情况,查询如下
select id from A left join B on A.id=B.a_id where B.id is null
A 表的数据量在 200W+,现在迷茫不知道怎么优化才好
没有分页吗?分页条件有没索引?外键有没索引?
能否换成 B.has_one A, dependent: :nullify?然后只查 A.b_id is null,无需 join
B.a_id 存在但是 B.id == null? 不觉得这个有问题?
单从你这条 sql 来分析 null 会影响索引的效率,会认为是同一个值