删除查询:14分钟无响应

时间:2013-07-02 05:19:20

标签: sql-server azure-sql-database

我有一个Sql Azure数据库,从过去的6个月到今天,当一个简单的

时,一切都很好

Delete from ListData where ListID=2323

在运行查询14分钟后,无法从190万条记录中删除7500条记录。但是,选择查询所需的时间不到2-3秒。

以前删除的工作方式与select类似,通常需要不到20秒的时间才能完成删除操作。今天有些事情是错的。

完整的数据库大小为1.1GB,因为我们将Web版本设置为5GB,因此我们有足够的可用空间。

知道出了什么问题吗?删除导致系统出现严重问题,导致我的客户损失不少钱。

感谢任何指导。

编辑:我在表上有几个索引,但没有触发器,FK或表中的任何其他此类内容。 LISTID是外键[逻辑],而RecordID [表中的另一列]是Listdata表中的自动增量id。

* 编辑2 *

    /****** Object:  Table [dbo].[tblSalesListData]    Script Date: 02-07-2013 11:45:14 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[ListData](
        [RecordID] [bigint] IDENTITY(1,1) NOT NULL,
        [ListID] [bigint] NULL,
        [SalesID] [bigint] NULL,
        [UserID] [varchar](100) NULL,
        [FirstName] [varchar](100) NULL,
        [MiddleName] [varchar](50) NULL,
        [LastName] [varchar](50) NULL,
        [Address1] [varchar](100) NULL,
        [Address2] [varchar](100) NULL,
        [City] [varchar](100) NULL,
        [State] [varchar](100) NULL,
        [ZipCode] [varchar](10) NULL,
        [WorkPhone] [varchar](15) NULL,
        [HomePhone] [varchar](15) NULL,
        [CellPhone] [varchar](15) NULL,
        [Email] [varchar](100) NULL,
        [DealerCode] [varchar](20) NULL,
        [IsPrinted] [varchar](10) NULL,
        [tag] [varchar](100) NULL,
        [RecordDate] [datetime] NULL,
        [CustomInfo] [text] NULL,
        [SourceData] [text] NULL,
     CONSTRAINT [PK_ListData] PRIMARY KEY CLUSTERED 
    (
        [RecordID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    )

    GO

    SET ANSI_PADDING OFF
    GO

    ALTER TABLE [dbo].[ListData] ADD  DEFAULT ('N') FOR [IsPrinted]
    GO

3 个答案:

答案 0 :(得分:2)

尝试添加索引和更改表结构 -

CREATE TABLE dbo.tblSalesListData
(
    RecordID BIGINT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    ListID BIGINT NOT NULL, -- NULL --> NOT NULL
    SalesID BIGINT NULL,
    UserID VARCHAR(100) NULL,
    FirstName VARCHAR(100) NULL,
    MiddleName VARCHAR(50) NULL,
    LastName VARCHAR(50) NULL,
    Address1 VARCHAR(100) NULL,
    Address2 VARCHAR(100) NULL,
    City VARCHAR(100) NULL,
    [State] VARCHAR(100) NULL,
    ZipCode VARCHAR(10) NULL,
    WorkPhone VARCHAR(15) NULL,
    HomePhone VARCHAR(15) NULL,
    CellPhone VARCHAR(15) NULL,
    Email VARCHAR(100) NULL,
    DealerCode VARCHAR(20) NULL,
    IsPrinted VARCHAR(10) NULL,
    tag VARCHAR(100) NULL,
    RecordDate DATETIME NULL,
    CustomInfo VARCHAR(MAX) NULL, -- TEXT --> VARCHAR(MAX)
    SourceData VARCHAR(MAX) NULL  -- TEXT --> VARCHAR(MAX)
)
GO

CREATE /*UNIQUE*/ NONCLUSTERED INDEX IX_ListID ON dbo.tblSalesListData
(
    ListID ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

答案 1 :(得分:1)

我有一点同样的问题。我做了以下步骤。但在执行这些步骤之前,请务必备份数据库。

  • 创建另一个结构相同的表
  • 将数据插入旧表的新表中
  • 放下旧桌子

再试一次,看看需要多长时间。

答案 2 :(得分:0)

感谢@Dinup和@Devart给我的想法,虽然我没有完全听从他们的话,但是他们都指导我找到解决方案的方向:

  1. 根据我的ListID删除所有索引。
  2. 运行我的查询,现在只需不到1秒。
  3. 重新创建索引。
  4. 幸福生活。