Ars*_*eep 8 mysql sql join query-optimization
查询:
select `r`.`id` as `id`
from `tbl_rls` as `r`
left join `tblc_comment_manager` as `cm` on `cm`.`rlsc_id` != `r`.`id`
Run Code Online (Sandbox Code Playgroud)
两张桌子都有8k记录,但为什么它很慢,有时需要2-3分钟?
OMG,这个查询使mysql服务器失效.会在一秒钟内回复你们的人民:(
建议索引列的所有人都是正确的.是的,我写的查询很愚蠢.谢谢你纠正我.
Mar*_*ith 13
你真的需要!=它还是意味着它=?
select `r`.`id` as `id` from `tbl_rls` as `r`
left join `tblc_comment_manager` as `cm`
on `cm`.`rlsc_id`!=`r`.`id
Run Code Online (Sandbox Code Playgroud)
这将选择几乎两个表的笛卡尔积.(我估计大约6000万行)
编辑:来自评论
是的,"!="匹配tbl_rls.id那些不在tblc_comment_manager中
我想如果您想使用这种outer join方法,这就是您所需要的.
select DISTINCT `r`.`id` as `id` from `tbl_rls` as `r`
left join `tblc_comment_manager` as `cm`
on `cm`.`rlsc_id`=`r`.`id
WHERE `cm`.`rlsc_id` IS NULL
Run Code Online (Sandbox Code Playgroud)
虽然我的偏好通常是
select `r`.`id` as `id`
from `tbl_rls`
as `r`
WHERE NOT EXISTS(
SELECT * FROM `tblc_comment_manager` as `cm`
WHERE `cm`.`rlsc_id`=`r`.`id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20563 次 |
| 最近记录: |