SQL中的INNER JOIN和JOIN有什么区别

SQL中的INNER JOIN和JOIN有什么区别_百度知道
SQL中的INNER JOIN和JOIN有什么区别
我有更好的答案
bid这是仅取出匹配的数据inner join 是内连接
join默认就是inner join .aid = b,b相连接,要取出id相同的字段 select * from a inner join b on a,join 默认结果等于inner join Table Aaid
a3 TableB bid bdate 1
b4 两个表a
采纳率:67%
inner join和jion是相同的。
为您推荐:
其他类似问题
join的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)SQL中的INNER JOIN和JOIN有什么区别_百度知道
SQL中的INNER JOIN和JOIN有什么区别
我有更好的答案
INNER JOIN会去掉重复项,比如a b和b a,只保留其中一个;而JOIN不会去掉重复项
采纳率:58%
为您推荐:
其他类似问题
join的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
这是inner join写法
B.dict_data_name,
SUM(A.pv) AS pv
shw_mo_health_news A
INNER JOIN bas_dict_data B ON A.third_name_dictid = B.item_id
A.class_level = 3
AND B.class_id = 1012
AND A.collect_date &= ''
AND A.collect_date &= ''
A.third_name_dictid
实际查询时间用户0.6S左右
用explain 查看:
这是from 多表写法
B.dict_data_name,
hn.third_name_dictid,
SUM(hn.pv) AS PV
shw_mo_health_news hn
hn.class_level = 3
AND hn.collect_date &= ''
AND hn.collect_date &= ''
hn.third_name_dictid
dd.item_id,
dd.dict_data_name
bas_dict_data dd
dd.class_id = 1012
A.third_name_dictid = B.item_id
实际用时0.03s左右
Explain查看
为什么这两种查询方式的效率会有这么大的差别呢?网上很多都说这两种写法的效率是差不多的;但是我这一个是0.6 和一个0.03,两者差别还是挺大的,这是什么原因造成的呢?是因为我写的SQl语句有问题还是别的原因?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
理论上说,子查询和JOIN没有本质区别,在查询分析器合理的优化之后应该是等效的。但是也正是由于查询分析器的各种缺陷,有些时候有些版本的数据库对子查询支持得更好,有些则对JOIN支持得更好。MySQL来说我见过的大部分版本子查询和JOIN是等效的,但是要小心的是子查询位于WHERE中的场景,比如:
SELECT * FROM table_a
WHERE A IN (
SELECT A FROM table_b
WHERE B = 'x'
SELECT table_a.* FROM table_a A
INNER JOIN table_b B ON a.A = b.A
WHERE B.B = 'x'
这就是一个典型的MySQL查询分析器失效的场景。table_a的A字段有索引的情况下理论上查询1和查询2应该等效,但实际上MySQL 5.x的版本中查询2的性能要明显优于查询1。这在上有人讨论,是一个存在近10年的。必须要升级到6.0.x才会得到修复。所以,对于哪个更优的问题,最可靠的办法只有自己去看explain的结果再下结论。对于你的两个查询,其实执行计划都是不一样的,很明显第二个的消耗要更大,时间差不多只是因为多出来的两步得到的数据量并不太大。再者这两个查询其实也不是等价的,都无从比较。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
应该是连接损耗吧,我觉得是因为你使用的条件都没有索引造成的。如果字段进行了适当的索引,由于mysql会自动对sql语句优化的原因,最终查询语句是一样的,性能相同,而没有索引的的时候所谓的优化也就不存在了,这个时候最终查询语句基本等同于你提交的sql。你可以试试
B.dict_data_name,
SUM(A.pv) AS pv
shw_mo_health_news A
INNER JOIN bas_dict_data B ON A.class_level = 3 and A.collect_date &= ''
AND A.collect_date &= '' and B.class_id=1012 and
A.third_name_dictid = B.item_id
A.third_name_dictid
我觉得性能会明显不同。
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。10被浏览6,584分享邀请回答3添加评论分享收藏感谢收起1添加评论分享收藏感谢收起写回答

我要回帖

更多关于 中小板和创业板的区别 的文章

 

随机推荐