我知道使用TRUNCATE是一个最小化记录操作,并且在DROP记录删除操作时不记录每条记录的删除.
那么,假设如果我想摆脱一个相对较大的表并且我希望这种情况发生得如此迅速并且尽可能小的记录开销我应该TRUNCATE TABLE在我之前DROP TABLE吗?这样RECOVERY SIMPLE做有什么不同吗?
我应该注意到,这需要以自动方式(在预编写的脚本中)发生,因为这将部署到客户端数据库,其中停机时间和日志文件增长都可能成为问题.
我一直在研究一个项目,并在使用SELECT INTO时遇到了一些有趣的行为.如果我有一个定义为列的表int identity(1,1) not null并使用SELECT INTO复制它,则新表将保留IDENTITY属性,除非涉及到连接.如果存在连接,则新表上的相同列被简单地定义为int not null.
这是一个可以运行以重现行为的脚本:
CREATE TABLE People (Id INT IDENTITY(1,1) not null, Name VARCHAR(10))
CREATE TABLE ReverseNames (Name varchar(10), ReverseName varchar(10))
INSERT INTO People (Name)
VALUES ('John'), ('Jamie'), ('Joe'), ('Jenna')
INSERT INTO ReverseNames (Name, ReverseName)
VALUES ('John','nhoJ'), ('Jamie','eimaJ'), ('Joe','eoJ'), ('Jenna','anneJ')
--------
SELECT Id, Name
INTO People_ExactCopy
FROM People
SELECT Id, ReverseName as Name
INTO People_WithJoin
FROM People
JOIN ReverseNames
ON People.Name = ReverseNames.Name
SELECT Id, (SELECT ReverseName FROM ReverseNames WHERE Name …Run Code Online (Sandbox Code Playgroud) 当我试图解决一个更复杂的问题时,我遇到了这个小问题,并试图找出优化器.所以,假设我有一个名为`MyTable'的表,可以像这样定义:
CREATE TABLE MyTable (
GroupClosuresID int identity(1,1) not null,
SiteID int not null,
DeleteDateTime datetime null
, CONSTRAINT PK_MyTable PRIMARY KEY (GroupClosuresID, SiteID))
Run Code Online (Sandbox Code Playgroud)
该表中有286,685行,运行DBCC SHOW_STATISTICS('MyTable','PK_MyTable')将产生:
Name Updated Rows Rows Sampled Steps Density Average key length String Index Filter Expression Unfiltered Rows
-------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- -------------------- ------ ------------- ------------------ ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------
PK_MyTable Aug 10 2011 1:00PM 286685 286685 18 0.931986 8 NO NULL 286685
(1 row(s) affected)
All density Average Length Columns
------------- -------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.743145E-06 4 …Run Code Online (Sandbox Code Playgroud) 假设我有一个简单的函数定义,什么都不做: function fn() { }
现在,当我跑步时,toString(fn)我得到"[object Object]".当我跑步时,toString.call(fn)我得到"[对象功能]".有谁知道为什么我在使用这种call方法时得到更具体的类型?
编辑:此行为在通过FireBug控制台运行的FireFox中展示.既toString.constructor和toString.call.constructor产量"功能()".