SQLServer选择查询性能问题
我有一个select查询的性能问题。查询可能需要4分钟以上,这太长了。 此查询是在.Net客户端进程上启动的,但不是在Microsoft SQLServer Management Studio上启动的。所以它有时能用5秒,有时能用4分钟,1分钟,30秒。 所以我有3个问题:SQLServer选择查询性能问题,sql,performance,select,sql-server-2008-r2,select-query,Sql,Performance,Select,Sql Server 2008 R2,Select Query,我有一个select查询的性能问题。查询可能需要4分钟以上,这太长了。 此查询是在.Net客户端进程上启动的,但不是在Microsoft SQLServer Management Studio上启动的。所以它有时能用5秒,有时能用4分钟,1分钟,30秒。 所以我有3个问题: 为什么选择查询太长?因为使用sqlserver缓存,它可以在不到5秒钟的时间内释放缓存。我使用DBCC FREEPROCCACHE和DBCC DROPCLEANBUFFERS指令测试这个查询 为什么一个名为sort_init
- SP:StmtCompleted:
`SELECT [DespatchNote].[Id], [DespatchNote].[RealType], [DespatchNote].[DbOwner], [DespatchNote].[Archived], [CreatedOn], [CreatedById], [UpdatedOn], [UpdatedById], [KeyingFinished], [IsValidated], [ValidatedOn], [ValidatedById], [Notes], [DefaultDisplayLanguageId], [ReferencedTransactionId], [TransactionNumber], [IsCanceled], [CanceledOn], [CanceledById], [TransactionType], [IsPending], [IsGenerated], [PrintCount], [LastPrintDate], [AttachedFile], [IsPointOfSalesTransaction], [IsAffiliatedTransaction], [IsDone], [DoneById], [DoneOn], [IsSent], [SentOn] FROM [DespatchNote] INNER JOIN [Flow] ON [DespatchNote].[Id] = [Flow].[Id] INNER JOIN [Transaction] ON [DespatchNote].[Id] = [Transaction].[Id] INNER JOIN [ProductsMovements] ON [DespatchNote].[Id] = [ProductsMovements].[Id] WHERE (([DespatchNote].[RealType] = @param42485) AND (([ProductsMovements].[IsDone] = @param42486) AND ([DespatchNote].[Archived] IS NULL)))`
- 持续时间(毫秒) :201277
- SQLTransaction:
持续时间(毫秒):29982
EventSubClass:1-Commit B) SHOWPLAN_全部打开时的查询 C) 对于每个表,我启动DBCC SHOWCONTIG([MyTable]),因此: DBCC SHOWCONTIG分析表“事务”。。。 表:“交易”(770101784);索引ID:1,基本数据ID:5 分析niveau表格效应。 -页面分析:3690 -扩展分析:466 -延长通勤时间:526 MyEnne DES页PAR扩展……:7.9 -分析密度[Meilleur valeur:valeur réelle]……87.67%[462:527] -分析物流碎片:1.95% -碎片分析扩展:5.79% MyEnne D'Octs Listes Par Page……:631.1 -莫耶恩页密度(综合):92.20% DBCC SHOWCONTIG分析表“发货通知单”。。。 表:“发送通知”(1138103095);索引ID:1,基本数据ID:5 分析niveau表格效应。 -页面分析:409 -扩展分析:52 -延长通勤时间51 MyEnne DES页PAR扩展……:7.9 -分析密度[Meilleur valeur:valeur réelle]……100.00%[52:52] -分析物流碎片:0.00% -碎片分析扩展:5.77% MyEnne D'Octs Listes Par Page……:806.2 -莫耶恩页密度(综合):90.04% DBCC SHOWCONTIG分析表格“ProductsMovements”。。。 表:“产品运动”(1074102867);索引ID:1,基本数据ID:5 分析niveau表格效应。 -页面分析:1112 -扩展分析:139 -通勤延长线:138 MyEnne DES页PAR扩展……:8 -分析密度[Meilleur valeur:valeur réelle]……100.00%[139:139] -分析物流碎片:0.00% -碎片分析扩展:5.76% MyEnne D'Octs Listes Par Page……:725.6 -莫耶恩页密度(综合):91.03% DBCC SHOWCONTIG分析表“流量”。。。 表:“流量”(1890105774);索引ID:1,基本数据ID:5 分析niveau表格效应。 -页面分析:2662 -扩展分析:337 -延长通勤时间:343 MyEnne DES页PAR扩展……:7.9 -分析密度[Meilleur valeur:valeur réelle]……96.80%[333:344] -分析物流碎片:0.45% -碎片分析扩展:5.93% MyEnne D'Octs Listes Par Page……:579.2 -莫耶恩页密度(综合):92.84% D) 各表的详细信息: 对于我数据库中的所有表,每个索引(聚集索引和非聚集索引)的总碎片小于10% 发货通知:(本表36360行)(7列) 索引:主键发送通知(群集) IX3_DispatchNote_RealType(非唯一、非群集) FK_DispatchNote_存档(非唯一、非群集) 创建表的脚本:
CREATE TABLE [dbo].[DespatchNote](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsSent] [bit] NULL,
[SentOn] [datetime] NULL,
CONSTRAINT [PK_DespatchNote] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Transaction](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[Notes] [ntext] NULL,
[DefaultDisplayLanguageId] [uniqueidentifier] NULL,
[ReferencedTransactionId] [uniqueidentifier] NULL,
[TransactionNumber] [nvarchar](40) NULL,
[IsCanceled] [bit] NULL,
[CanceledOn] [datetime] NULL,
[CanceledById] [uniqueidentifier] NULL,
[TransactionType] [int] NOT NULL,
[IsPending] [bit] NOT NULL,
[IsGenerated] [bit] NOT NULL,
[PrintCount] [int] NOT NULL,
[LastPrintDate] [datetime] NULL,
[AttachedFile] [image] NULL,
[IsPointOfSalesTransaction] [bit] NOT NULL,
[IsAffiliatedTransaction] [bit] NOT NULL,
CONSTRAINT [PK_Transaction] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_TransactionType] DEFAULT (0) FOR [TransactionType]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPending] DEFAULT (0) FOR [IsPending]
GO
ALTER TABLE [dbo].[Transaction] ADD DEFAULT ((0)) FOR [IsGenerated]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_PrintCount] DEFAULT ((0)) FOR [PrintCount]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPointOfSalesTransaction] DEFAULT ((0)) FOR [IsPointOfSalesTransaction]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsAffiliatedTransaction] DEFAULT ((0)) FOR [IsAffiliatedTransaction]
CREATE TABLE [dbo].[Flow](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[CreatedOn] [datetime] NULL,
[CreatedById] [uniqueidentifier] NULL,
[UpdatedOn] [datetime] NULL,
[UpdatedById] [uniqueidentifier] NULL,
[KeyingFinished] [bit] NULL,
[IsValidated] [bit] NULL,
[ValidatedOn] [datetime] NULL,
[ValidatedById] [uniqueidentifier] NULL,
CONSTRAINT [PK_Flow] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ProductsMovements](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsDone] [bit] NULL,
[DoneById] [uniqueidentifier] NULL,
[DoneOn] [datetime] NULL,
CONSTRAINT [PK_ProductsMovements] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
事务:(此表上136120行)(20列)
索引:PK_事务(集群)
IX3_事务_RealType(非唯一、非群集)
FK_事务\u引用事务ID(非唯一、非群集)
FK_事务_DefaultDisplayLanguageId(非唯一、非群集)
FK_事务_CanceledById(非唯一、非群集)
FK_事务_已存档(非唯一、非群集)
创建表的脚本:
CREATE TABLE [dbo].[DespatchNote](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsSent] [bit] NULL,
[SentOn] [datetime] NULL,
CONSTRAINT [PK_DespatchNote] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Transaction](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[Notes] [ntext] NULL,
[DefaultDisplayLanguageId] [uniqueidentifier] NULL,
[ReferencedTransactionId] [uniqueidentifier] NULL,
[TransactionNumber] [nvarchar](40) NULL,
[IsCanceled] [bit] NULL,
[CanceledOn] [datetime] NULL,
[CanceledById] [uniqueidentifier] NULL,
[TransactionType] [int] NOT NULL,
[IsPending] [bit] NOT NULL,
[IsGenerated] [bit] NOT NULL,
[PrintCount] [int] NOT NULL,
[LastPrintDate] [datetime] NULL,
[AttachedFile] [image] NULL,
[IsPointOfSalesTransaction] [bit] NOT NULL,
[IsAffiliatedTransaction] [bit] NOT NULL,
CONSTRAINT [PK_Transaction] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_TransactionType] DEFAULT (0) FOR [TransactionType]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPending] DEFAULT (0) FOR [IsPending]
GO
ALTER TABLE [dbo].[Transaction] ADD DEFAULT ((0)) FOR [IsGenerated]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_PrintCount] DEFAULT ((0)) FOR [PrintCount]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPointOfSalesTransaction] DEFAULT ((0)) FOR [IsPointOfSalesTransaction]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsAffiliatedTransaction] DEFAULT ((0)) FOR [IsAffiliatedTransaction]
CREATE TABLE [dbo].[Flow](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[CreatedOn] [datetime] NULL,
[CreatedById] [uniqueidentifier] NULL,
[UpdatedOn] [datetime] NULL,
[UpdatedById] [uniqueidentifier] NULL,
[KeyingFinished] [bit] NULL,
[IsValidated] [bit] NULL,
[ValidatedOn] [datetime] NULL,
[ValidatedById] [uniqueidentifier] NULL,
CONSTRAINT [PK_Flow] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ProductsMovements](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsDone] [bit] NULL,
[DoneById] [uniqueidentifier] NULL,
[DoneOn] [datetime] NULL,
CONSTRAINT [PK_ProductsMovements] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
流量:(本表136120行)(13列)
索引:主键流(集群)IX3_Flow_RealType(非唯一、非群集) FK_Flow_ValidatedById(非唯一、非群集) FK_Flow_UpdatedById(非唯一、非群集) FK_Flow_CreatedById(非唯一、非群集) FK_流_存档(非唯一、非群集) 创建表的脚本:
CREATE TABLE [dbo].[DespatchNote](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsSent] [bit] NULL,
[SentOn] [datetime] NULL,
CONSTRAINT [PK_DespatchNote] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Transaction](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[Notes] [ntext] NULL,
[DefaultDisplayLanguageId] [uniqueidentifier] NULL,
[ReferencedTransactionId] [uniqueidentifier] NULL,
[TransactionNumber] [nvarchar](40) NULL,
[IsCanceled] [bit] NULL,
[CanceledOn] [datetime] NULL,
[CanceledById] [uniqueidentifier] NULL,
[TransactionType] [int] NOT NULL,
[IsPending] [bit] NOT NULL,
[IsGenerated] [bit] NOT NULL,
[PrintCount] [int] NOT NULL,
[LastPrintDate] [datetime] NULL,
[AttachedFile] [image] NULL,
[IsPointOfSalesTransaction] [bit] NOT NULL,
[IsAffiliatedTransaction] [bit] NOT NULL,
CONSTRAINT [PK_Transaction] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_TransactionType] DEFAULT (0) FOR [TransactionType]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPending] DEFAULT (0) FOR [IsPending]
GO
ALTER TABLE [dbo].[Transaction] ADD DEFAULT ((0)) FOR [IsGenerated]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_PrintCount] DEFAULT ((0)) FOR [PrintCount]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsPointOfSalesTransaction] DEFAULT ((0)) FOR [IsPointOfSalesTransaction]
GO
ALTER TABLE [dbo].[Transaction] ADD CONSTRAINT [DF_Transaction_IsAffiliatedTransaction] DEFAULT ((0)) FOR [IsAffiliatedTransaction]
CREATE TABLE [dbo].[Flow](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[CreatedOn] [datetime] NULL,
[CreatedById] [uniqueidentifier] NULL,
[UpdatedOn] [datetime] NULL,
[UpdatedById] [uniqueidentifier] NULL,
[KeyingFinished] [bit] NULL,
[IsValidated] [bit] NULL,
[ValidatedOn] [datetime] NULL,
[ValidatedById] [uniqueidentifier] NULL,
CONSTRAINT [PK_Flow] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ProductsMovements](
[Id] [uniqueidentifier] NOT NULL,
[Archived] [datetime] NULL,
[RealType] [uniqueidentifier] NOT NULL,
[DbOwner] [uniqueidentifier] NOT NULL,
[RecordVersion] [timestamp] NOT NULL,
[IsDone] [bit] NULL,
[DoneById] [uniqueidentifier] NULL,
[DoneOn] [datetime] NULL,
CONSTRAINT [PK_ProductsMovements] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
PRODUCTSMOVEMENTS:(此表上有83631行)(8列)
索引:PK_产品移动(集群)
IX3_ProductsMovements_RealType(非唯一、非群集)
FK_ProductsMovements_DoneById(非唯一、非群集)
FK_专业版