[英]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操作。
SELECT * FROM [dbo].[TableABC] WHERE FieldA = @FieldA
INSERT INTO [dbo].[TableABC](FieldA,FieldB,FieldC,FieldD,FieldE) VALUES (@FieldA,@FieldB,@FieldC,@FieldD,@FieldE)
FieldA具有唯一值,但表中没有约束。
当前表中有6070755行。 随着数据的增长,性能越来越慢。 有什么建议,如何提高性能? 如何使CREATE和READ操作更快?
现在我遇到了问题,即选择和插入的时间太长,有时超过60秒
阅读有关SQL基础的知识-索引肯定是其中之一。 而且,如果您具有唯一值,并且字段上没有索引(约束无关紧要,则唯一索引就足够了)-是的,这样会变慢。 SQL Server必须检查整个表。
所以:
给定您的2条语句和小写的“ FieldA具有唯一值,但表中没有约束”。 我假设您尝试通过首先选择在其中强制执行唯一值。 这会使您减速。
而是创建索引,然后尝试/捕获非唯一的SQL错误-更快。 更快。 索引会使插入LITTLE的速度变慢,但是您可以完全不用很慢的速度进行选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.