SQL中,两个表内联,条件是写到ON的后面还是写到where的后面,谁能帮我分析下性能?
发布网友
发布时间:2022-04-10 10:59
我来回答
共3个回答
热心网友
时间:2022-04-10 12:28
你的*是A和B的笛卡尔积了,这才是数据超大造成死循环的原因。应该用你需要的字段,而不是*
可以用a.*
Try this one:
select * from A inner join B on A.Id=B.Id AND B.State in (1,2,3)
where A.Name='meng' and and A.Age>30追问能帮我分析下,条件写在ON后面和where后面的区别吗??3Q
追答差别不是很大。但是开发过程中一般规范都是
凡是A INNER B里面牵扯到b得,都写在on后面,
凡是牵扯到a和B得,也写在on后面。
where后面只跟A的条件语句。
热心网友
时间:2022-04-10 13:46
你这样子写看对不对
select * from A inner join B on (A.Id=B.Id ) where (A.Name='meng' and B.State <=3 and A.Age>30)
热心网友
时间:2022-04-10 15:21
这样写没错啊。如果有死循环的话,检查一下数据,多半是数据有问题。