Ниже приведен сценарий таблицы. Доступ к данным из этой таблицы слишком медленный.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Emails](
[id] [int] IDENTITY(1,1) NOT NULL,
[datecreated] [datetime] NULL CONSTRAINT [DF_Emails_datecreated]
DEFAULT (getdate()),
[UID] [nvarchar](250) COLLATE Latin1_General_CI_AS NULL,
[From] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[To] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[Subject] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL,
[Body] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL,
[HTML] [nvarchar](max) COLLATE Latin1_General_CI_AS NULL,
[AttachmentCount] [int] NULL,
[Dated] [datetime] NULL
) ON [PRIMARY]
Следующий запрос занимает 50 секунд для получения данных.
select id, datecreated, UID, [From], [To], Subject, AttachmentCount,
Dated from emails
Если я включу Body и Html в select, то время будет хуже.
включены индексы:
- идентификатор уникальный сгруппированный
- Из Неуникальные не кластеризованные
- Кому Не уникальный, не кластеризованный
Таблицы в настоящее время содержат более 180000 записей.
Каждый месяц может быть 100 000 записей, поэтому со временем это будет происходить медленнее.
Разделение данных на две таблицы решит проблему? Какие еще показатели должны быть?