
SQL中,两个表内联,条件是写到ON的后面还是写到where的后面,谁能帮我分析下性能?
如:select*fromAinnerjoinBon(A.Id=B.Id)whereA.Name='meng'andB.Statein(1,2,3)andA.Age>30...
如:select * from A inner join B on (A.Id=B.Id ) where A.Name='meng' and B.State in (1,2,3) and A.Age>30 ;有时在执行这语句时会死循环,很是郁闷!求各位大侠分析下??
展开
3个回答
展开全部
你的*是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
可以用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的条件语句。
展开全部
你这样子写看对不对
select * from A inner join B on (A.Id=B.Id ) where (A.Name='meng' and B.State <=3 and A.Age>30)
select * from A inner join B on (A.Id=B.Id ) where (A.Name='meng' and B.State <=3 and A.Age>30)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写没错啊。如果有死循环的话,检查一下数据,多半是数据有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询