• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

做表的关联时在每个查询后面加条件和在所有关联完后加条件哪个快

php 搞代码 3年前 (2022-01-23) 20次浏览 已收录 0个评论
文章目录[隐藏]

例子1:SELECT * FROM contact_card AS c
INNER JOIN contact_card_extend AS b ON c.uuid = b.uuid AND c.uuid=’AX61t09bpcmmhsXISvbAv1mdb71JZwt3′ AND c.status=’active’
INNER JOIN contact_c本@文来源[email protected]搞@^&代*@码网(搞代gaodaima码ard_vcardinfo AS info ON c.uuid=info.card_id;

例子2:SELECT * FROM contact_card AS c
INNER JOIN contact_card_extend AS b ON c.uuid = b.uuid
INNER JOIN contact_card_vcardinfo AS info ON c.uuid=info.card_id
WHERE c.uuid=’AX61t09bpcmmhsXISvbAv1mdb71JZwt3′ AND c.status=’active’

回复讨论(解决方案)

两者一样
不过一般都写成后者,因为 c.uuid=’AX61t09bpcmmhsXISvbAv1mdb71JZwt3′ AND c.status=’active’ 与连接无关

两者一样
不过一般都写成后者,因为 c.uuid=’AX61t09bpcmmhsXISvbAv1mdb71JZwt3′ AND c.status=’active’ 与连接无关

就是这样子

就大数据来说不知道前者是不是更快点,就理论来说前者是先通过第一个查询的出的结果来进行关联,而第一个查询已经进行了条件筛选,所以应该是要比第二个所有查询关联完之后再进行条件筛选快。我想应该是这样没有试所以就来问问。

那只是你的想象而已
数据库中有一个专门用来解析 join 命令的过程,解析时对于与连接无关的表达式都剔出来放到 where 子句中

如果你只想让主表符合条件的记录参与查询,应使用子查询
SELECT * FROM
(select * from contact_card where uuid=’AX61t09bpcmmhsXISvbAv1mdb71JZwt3′ AND status=’active’) AS c
INNER JOIN contact_card_extend AS b ON c.uuid = b.uuid
INNER JOIN contact_card_vcardinfo AS info ON c.uuid=info.card_id

受教了,谢谢大神儿!已经改正错误!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:做表的关联时在每个查询后面加条件和在所有关联完后加条件哪个快
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址