我以前用XML列發佈了一個關於我的查詢速度的問題。經過一些進一步的調查後,我發現它不像以前所想的那樣與XML相關。表格模式和查詢非常簡單。有超過800K行,一切都運行平穩,但沒有記錄的增加,它需要幾分鐘的時間才能運行。SQL Server速度
表:
/****** Object: Table [dbo].[Audit] Script Date: 08/14/2009 09:49:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Audit](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PID] [int] NOT NULL,
[Page] [int] NOT NULL,
[ObjectID] [int] NOT NULL,
[Data] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Created] [datetime] NULL,
CONSTRAINT [PK_Audit] 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]
查詢:
SELECT *
FROM Audit
WHERE PID = 158
AND Page = 2
AND ObjectID = 93
查詢只返回26條記錄和有趣的事情是,如果我加入「TOP 26」查詢不到執行其次,如果我將其更改爲「TOP 27」,則需要一分鐘。即使我將查詢更改爲SELECT ID,也無關緊要。
任何幫助表示讚賞
你忘了PID ... – Guffa 2009-08-14 20:51:47
是的,對不起:)你應該索引任何東西出現在where子句。我沒有列出PID,因爲我誤解爲ID,這是主鍵,並且已經有索引。 – 2009-08-14 22:23:39
那麼,它實際上可以創建一個沒有索引的主鍵... – Guffa 2009-08-14 23:45:52