繁体   English   中英

如何提高性能

[英]How to improve perfomance

我有以下表结构:

CREATE TABLE [dbo].[TableABC](
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [FieldA] [nvarchar](36) NULL,
    [FieldB] [int] NULL,
    [FieldC] [datetime] NULL,
    [FieldD] [nvarchar](255) NULL,
    [FieldE] [decimal](19, 5) NULL,
PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我对此表执行两种类型的CRUD操作。

  1. SELECT * FROM [dbo].[TableABC] WHERE FieldA = @FieldA
  2. INSERT INTO [dbo].[TableABC](FieldA,FieldB,FieldC,FieldD,FieldE) VALUES (@FieldA,@FieldB,@FieldC,@FieldD,@FieldE)

FieldA具有唯一值,但表中没有约束。

当前表中有6070755行。 随着数据的增长,性能越来越慢。 有什么建议,如何提高性能? 如何使CREATE和READ操作更快?

现在我遇到了问题,即选择和插入的时间太长,有时超过60秒

阅读有关SQL基础的知识-索引肯定是其中之一。 而且,如果您具有唯一值,并且字段上没有索引(约束无关紧要,则唯一索引就足够了)-是的,这样会变慢。 SQL Server必须检查整个表。

所以:

  • 将唯一的索引添加到字段a。

给定您的2条语句和小写的“ FieldA具有唯一值,但表中没有约束”。 我假设您尝试通过首先选择在其中强制执行唯一值。 这会使您减速。

而是创建索引,然后尝试/捕获非唯一的SQL错误-更快。 更快。 索引会使插入LITTLE的速度变慢,但是您可以完全不用很慢的速度进行选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM