我知道模糊的标题。
目前,我的数据库中有16,000行。这是在开发过程中创建的,我现在要删除所有这些行,以便我可以重新开始(所以我没有重复的数据)。
数据库位于SQL Azure上。
如果我运行选择查询
SELECT [Guid]
,[IssueNumber]
,[Severity]
,[PainIndex]
,[Status]
,[Month]
,[Year]
,[DateCreated]
,[Region]
,[IncidentStart]
,[IncidentEnd]
,[SRCount]
,[AggravatingFactors]
,[AggravatingFactorDescription]
FROM [dbo].[WeeklyGSFEntity]
GO
这将返回所有行,SSMS表示这需要49秒。
如果我试图放下桌子,这会持续5分钟。
DROP TABLE [dbo].[WeeklyGSFEntity]
GO
/****** Object: Table [dbo].[WeeklyGSFEntity] Script Date: 10/01/2013 09:46:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[WeeklyGSFEntity](
[Guid] [uniqueidentifier] NOT NULL,
[IssueNumber] [int] NULL,
[Severity] [int] NULL,
[PainIndex] [nchar](1) NULL,
[Status] [nvarchar](255) NULL,
[Month] [int] NULL,
[Year] [int] NULL,
[DateCreated] [datetime] NULL,
[Region] [nvarchar](255) NULL,
[IncidentStart] [datetime] NULL,
[IncidentEnd] [datetime] NULL,
[SRCount] [int] NULL,
[AggravatingFactors] [nvarchar](255) NULL,
[AggravatingFactorDescription] [nvarchar](max) NULL,
PRIMARY KEY CLUSTERED
(
[Guid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
如果我尝试删除每一行,这也需要5分钟。
DELETE
FROM [dbo].[WeeklyGSFEntity]
GO
我做错了什么或只是这是大数据并且我不耐烦了?
更新
删除整个数据库大约需要25秒。
在localdb\v11.0
中导入22,000行(大约相同的16,000多个)需要6秒。我知道这是本地的,但本地开发服务器肯定比Azure慢?当然...
更新第二个:
重新创建数据库并重新创建模式(使用(Fluent)NHibernate),然后插入大约20,000行需要2分6秒。所有单元测试都通过。 我有什么办法可以回顾一下吗?
答案 0 :(得分:0)
删除并重新创建数据库大大加快了速度。
原因尚不清楚。
答案 1 :(得分:0)
可能存在导致表锁定的打开事务。这可能是因为我们在开发过程中取消了一半的操作。
执行sp_who2
并查看哪个Id位于blkby列中。如果有的话就是它。
要杀死该过程,请执行kill id