社区
MS-SQL Server
帖子详情
INNER JOIN 表 和 WHERE 表条件的性能有差别吗?
So1o
2003-05-09 03:55:00
比如
SELECT tab_A.AAAA, tab_B.BBBB
FROM tab_A, tab_B
WHERE tab_A.ID = tab_B.ID
和
SELECT AAAA
FROM tab_A
INNER JOIN tab_B ON
tab_A.ID = tab_B.ID
在性能上有差别吗?
...全文
234
7
打赏
收藏
INNER JOIN 表 和 WHERE 表条件的性能有差别吗?
比如 SELECT tab_A.AAAA, tab_B.BBBB FROM tab_A, tab_B WHERE tab_A.ID = tab_B.ID 和 SELECT AAAA FROM tab_A INNER JOIN tab_B ON tab_A.ID = tab_B.ID 在性能上有差别吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
So1o
2003-05-09
打赏
举报
回复
收到 收到,以后看帮助就OK了
:)
CrazyFor
2003-05-09
打赏
举报
回复
Transact-SQL 参考
DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。
语法
DBCC CHECKIDENT
( 'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
}
]
)
参数
'table_name'
是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。
NORESEED
指定不应更正当前标识值。
RESEED
指定应该更正当前标识值。
new_reseed_value
是在标识列中重新赋值时要使用的值。
注释
如有必要,DBCC CHECKIDENT 会更正列的当前标识值。然而,如果标识列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 语句中)创建的,则不更正当前标识值。
如果标识列上有主键或唯一键约束,无效标识信息可能会导致错误信息 2627。
对当前标识值所做的具体更正取决于参数规范。
DBCC CHECKIDENT 语句 所做的标识更正
DBCC CHECKIDENT ('table_name', NORESEED) 不重置当前标识值。DBCC CHECKIDENT 返回一个报表,它指明当前标识值和应有的标识值。
DBCC CHECKIDENT ('table_name') 或
DBCC CHECKIDENT ('table_name', RESEED) 如果表的当前标识值小于列中存储的最大标识值,则使用标识列中的最大值对其进行重置。
DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
当前标识值可以大于表中的最大值。在此情况下,DBCC CHECKIDENT 并不自动重置当前标识值。若要在当前标识值大于列中的最大值时对当前标识值进行重置,请使用两种方法中的任意一种:
执行 DBCC CHECKIDENT ('table_name', NORESEED) 以确定列中的当前最大值,然后使用 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 语句将该值指定为 new_reseed_value。
将 new_reseed_value 置为很小值来执行 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value),然后运行 DBCC CHECKIDENT ('table_name', RESEED)。
结果集
不管是否指定任何选项(针对于包含标识列的表;下例使用 pubs 数据库的 jobs 表),DBCC CHECKIDENT 返回以下结果集(值可能会有变化):
Checking identity information: current identity value '14', current column value '14'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
权限
DBCC CHECKIDENT 权限默认授予表所有者、sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员且不可转让。
示例
A. 如有必要,重置当前标识值
下例在必要的情况下重置 jobs 表的当前标识值。
USE pubs
GO
DBCC CHECKIDENT (jobs)
GO
B. 报告当前标识值
下例报告 jobs 表中的当前标识值;如果该标识值不正确,并不对其进行更正。
USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO
C. 强制当前标识值为 30
下例强制 jobs 表中的当前标识值为 30。
USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO
请参见
ALTER TABLE
CREATE TABLE
DBCC
IDENTITY(属性)
USE
©1988-2000 Microsoft Corporation。保留所有权利。
psxfghost
2003-05-09
打赏
举报
回复
但是
SELECT AAAA
FROM tab_A
left JOIN tab_B ON
tab_A.ID = tab_B.ID
和
SELECT AAAA
FROM tab_A
inner JOIN tab_B ON
tab_A.ID = tab_B.ID
不一样,前者若不满足条件的话,它也将tab_A所有数据列出,
只是在无对应数据的那一行,将tab_A表的数据置NULL
psxfghost
2003-05-09
打赏
举报
回复
一样的!
如果你不是很清楚,可以去查一下帮助!
So1o
2003-05-09
打赏
举报
回复
还有一个问题
怎样更改标识列的起始数字?
wuqiuzhi
2003-05-09
打赏
举报
回复
不清楚,帮你顶一下。
CrazyFor
2003-05-09
打赏
举报
回复
一样.
inner
join
on 加
条件
和where加
条件
_MySQL实战:
Join
的使用技巧和优化
本文深入讲解 SQL 中
Join
的概念、分类及其应用场景,并提供优化技巧,包括显式与隐式连接的区别、On与Where
条件
的应用、更新自身
表
的方法、子查询与
表
连接的选择,以及聚合查询的优化策略。
Inner
Join
和Where的
差别
值得注意
本文探讨了
INNER
JOIN
与WHERE在SQL语句中的不同用途及效率差异。指出
INNER
JOIN
不仅更符合标准SQL语法,而且通常能提供更好的
性能
。此外,文章还强调了显性连接对于维护代码正确性和可读性的重要性。
mysql
inner
和left优化_浅谈mysql中的left
join
和
inner
join
性能
及优化策略
本文探讨了MySQL中Left
Join
与
Inner
Join
的
性能
差异,解释了Left
Join
较慢的原因,包括逻辑运算量和Nest Loop
Join
算法。并提出了Left
Join
的优化方案,如选择小
表
作为驱动
表
、使用合适的WHERE
条件
、添加索引等。同时指出,根据业务需求选择合适的关联类型,有时
Inner
Join
可能更为高效。
inner
join
和where 区别
深入解析数据库连接方式,从隐性连接到显性连接的转变,以及如何选择合适的连接类型来提升查询效率。同时,提供数据库查询
性能
优化的原则,包括连接顺序、字段别名使用、查询
条件
设置等关键技巧。
mysql
inner
join
与where效率_Oracle中Left
join
的on和where的效率
差别
本文探讨了Oracle数据库中LEFT
JOIN
操作的ON与WHERE子句的效率差异,并通过具体测试对比了两种方式的
性能
。同时介绍了LINQ中实现LEFT OUTER
JOIN
的方法。
MS-SQL Server
34,876
社区成员
254,640
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章