是被good或doesn't matter或bad以包括覆盖索引的主键?
CREATE NONCLUSTERED INDEX index_name_here ON dbo.table_name_here
(column_to_index_here)
INCLUDE (primary_key_column,other_column_here)
WITH( STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, --<default junk from SSMS
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我认为这没关系,因为PK无论如何都会在索引中.
编辑 - 澄清.
我primary_key_column是聚集的,但你可以解释/提供信息,当它不是.
我将加入dbo.table_name_here该column_to_index_here专栏,然后将加入其他表格primary_key_column和other_column_here.
我有一些旧表,我认为,几乎是毫无价值的索引.我怎样才能轻易确定在丢弃它之前从未使用过.
范围是SET IDENTITY_INSERT xyz ON什么?
如果我在某个表的一个存储过程中使用它,如果运行不同过程的其他用户同时插入该特定表,会发生什么?
另外,如果不同的用户/程序试图同时SET IDENTITY_INSERT xyz ON
为不同的表设置会发生什么?
我在SSMS中打开一个新窗口并运行:
SET ANSI_DEFAULTS ON
GO
CREATE PROCEDURE [dbo].[zzz_test2]
(
@a int
)
AS
SET NOCOUNT ON
SET @a=1
RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)
然后关闭窗口,这会产生此警告:
There are uncommitted transactions. Do you wish to commit these before closing the window?
到底是怎么回事??
当我打开一个新的SSMS窗口并运行它:
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[zzz_test2]
(
@a int
)
AS
SET NOCOUNT ON
SET @a=1
RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)
并关闭窗口,我没有得到任何警告.
在创建存储过程之前要发出的最佳SET选项是什么?
例如
SET QUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON
CREATE PROCEDURE HelloWorld
AS
--also, should any be issued within the procedure body?
PRINT 'hello world!'
RETURN 0
GO
Run Code Online (Sandbox Code Playgroud)
最好的,我的意思是最喜欢的设置.