由于a Table Scan和a Clustered Index Scan本质上都扫描了表中的所有记录,为什么Clustered Index Scan应该更好?
举个例子 - 当有很多记录时,下列内容之间的性能差异是什么?:
declare @temp table(
SomeColumn varchar(50)
)
insert into @temp
select 'SomeVal'
select * from @temp
-----------------------------
declare @temp table(
RowID int not null identity(1,1) primary key,
SomeColumn varchar(50)
)
insert into @temp
select 'SomeVal'
select * from @temp
Run Code Online (Sandbox Code Playgroud) 我在数据库中工作,我通过数据加载器在原始表中加载数据.但今天数据加载器因未知原因而陷入困境.然后我从Windows任务管理器停止了数据加载器.但后来我再次尝试在原始表中加载数据,但发现它已锁定,我无法对其进行任何操作.我尝试重新启动SQL Server服务,但它没有解决.我没有权限杀死此服务器上的进程.
下面是SQL Server显示的消息.
执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionInfo)
课程地点:
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串的SqlCommand,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery (StringCollection查询)
在Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery(StringCollection查询,布尔includeDbContext)
在Microsoft.SqlServer.Management.Smo.NamedSmoObject.RenameImplWorker(字符串newName)将
在Microsoft.SqlServer.Management.Smo.NamedSmoObject. RenameImpl(String newName)===================================
超出锁定请求超时时间.参数@objname是不明确的,或者声明的@objtype(OBJECT)是错误的.(.Net SqlClient数据提供程序)
服务器名称:162.44.25.59错误号码:1222
严重性:16状态:56
过程:sp_rename行号:282
我的SQL Server版本是2008 R2.
好的,所以我在Technet上搜索了这个答案,但没有用.
我只想打印一个与两个String变量连接的整数变量.
这是我的代码,不运行:
print 'There are ' + @Number + ' alias combinations did not match a record'
Run Code Online (Sandbox Code Playgroud)
它似乎是这样一个基本功能,我无法想象它在T-SQL中是不可能的.但如果不可能,请说出来.我似乎无法找到一个直接的答案.
你们在你选择的源代码管理系统中跟踪存储过程和数据库架构吗?
当您进行更改(添加表,更新存储过程,如何将更改导入源代码管理?
我们在工作中使用SQL Server,并且我已经开始使用darc进行版本控制,但我对一般策略以及任何方便的工具都很好奇.
编辑:哇,谢谢所有伟大的建议,伙计们!我希望我能选择多个"已接受的答案"!
我想确保我没有在表格中插入重复的行(例如,只有主键不同).我的所有字段都允许NULLS,因为我已经确定null表示"所有值".由于null,我的存储过程中的以下语句不起作用:
IF EXISTS(SELECT * FROM MY_TABLE WHERE
MY_FIELD1 = @IN_MY_FIELD1 AND
MY_FIELD2 = @IN_MY_FIELD2 AND
MY_FIELD3 = @IN_MY_FIELD3 AND
MY_FIELD4 = @IN_MY_FIELD4 AND
MY_FIELD5 = @IN_MY_FIELD5 AND
MY_FIELD6 = @IN_MY_FIELD6)
BEGIN
goto on_duplicate
END
Run Code Online (Sandbox Code Playgroud)
因为NULL = NULL不是真的.
如何在没有每列的IF IS NULL语句的情况下检查重复项?
我想根据我的db table [member]字段"date_created"获取上个月的记录.
sql是做什么的?
澄清,上个月 - 2009年1月8日至2009年8月31日
如果今天是2010年3月1日,我需要获取2009年1月12日至2009年12月31日的记录.
我试图在我的SQL Server数据库中合并这样的东西:
[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine
进入:
[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine
我需要在SQL Server和Oracle中执行此操作.
我发现GROUP_CONCATMySQL 的功能完全符合我的需要,但MySQL不是一个选项.
编辑:测试台:
DECLARE @Tickets TABLE (
[TicketID] char(5) NOT NULL,
[Person] nvarchar(15) NOT NULL
)
INSERT INTO @Tickets VALUES
('T0001', 'Alice'),
('T0001', 'Bob'),
('T0002', 'Catherine'),
('T0002', 'Doug'),
('T0003', 'Elaine')
SELECT * FROM @Tickets
Run Code Online (Sandbox Code Playgroud) 我总是使用类似下面的东西来实现它:
INSERT INTO TheTable
SELECT
@primaryKey,
@value1,
@value2
WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable
WHERE
PrimaryKey = @primaryKey)
Run Code Online (Sandbox Code Playgroud)
...但是一旦加载,就会发生主键违规.这是唯一插入此表的语句.那么这是否意味着上述陈述不是原子的?
问题是,这几乎不可能随意重建.
也许我可以将其更改为以下内容:
INSERT INTO TheTable
WITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)
SELECT
@primaryKey,
@value1,
@value2
WHERE
NOT EXISTS
(SELECT
NULL
FROM
TheTable
WITH
(HOLDLOCK,
UPDLOCK,
ROWLOCK)
WHERE
PrimaryKey = @primaryKey)
Run Code Online (Sandbox Code Playgroud)
虽然,也许我使用错误的锁或使用过多的锁定或其他东西.
我在stackoverflow.com上看到了其他问题,其中答案是建议"IF(SELECT COUNT(*)... INSERT"等),但我总是在(可能是不正确的)假设单个SQL语句是原子的.
有没有人有任何想法?
有没有办法DateTime.Now在Sql Server中设置列的默认值?
例:
table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null
Run Code Online (Sandbox Code Playgroud)
这条线:
Insert into Event(Description) values('teste');
Run Code Online (Sandbox Code Playgroud)
应该插入一行,Date值应该是当前日期.
我有一个SQL服务器时间戳,我需要将其转换为自1970年以来以毫秒为单位的时间表示.我可以使用纯SQL执行此操作吗?如果没有,我将它提取到DateTimeC#中的变量中.是否有可能获得毫米级的代表?
谢谢,
Teja.
sql-server ×10
sql ×7
t-sql ×5
database ×2
locking ×2
c# ×1
concurrency ×1
datetime ×1
deadlock ×1
indexing ×1