2015-03-24 4 views
1

У меня есть база данных SQL Server и есть таблица, содержащая слишком много записей. Прежде чем он работал нормально, но теперь, когда я запускаю SQL Statement, требуется время для выполнения. Иногда заставляют SQL Database использовать слишком много CPU. Это запрос для таблицы.Заявление SQL занимает много времени для выполнения

CREATE TABLE [dbo].[tblPAnswer1](
[ID] [bigint] IDENTITY(1,1) NOT NULL, 
[AttrID] [int] NULL, 
[Kidato] [int] NULL, 
[Wav] [int] NULL, 
[Was] [int] NULL, 
[ShuleID] [int] NULL, 
[Mwaka] [int] NULL, 
[Swali] [float] NULL, 
[Wilaya] [int] NULL, 
CONSTRAINT [PK_tblPAnswer1] 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] 

И нижеследующее вниз - хранимая процедура sql для инструкции.

ALTER PROC [dbo].[uspGetPAnswer1](@ShuleID int, @Mwaka int, @Swali float, @Wilaya int) 
as 

SELECT ID, 
     AttrID, 
     Kidato, 
     Wav, 
     Was, 
     ShuleID, 
     Mwaka, 
     Swali, 
     Wilaya 
FROM dbo.tblPAnswer1 
WHERE [ShuleID] = @ShuleID 
     AND [Mwaka] = @Mwaka 
     AND [Swali] = @Swali 
     AND Wilaya = @Wilaya 

Что не так в моем SQL-заявлении. Нужна помощь.

+1

Являются ли столбцы, на которых вы помещаете, где индексируется предложение? – Rafay

+1

Является ли это очень высокой базой транзакций? – Yugz

+2

Вы ищете * точное значение * столбца 'float'? – Luaan

ответ

0

Добавить индекс на ID колонки и включает ShuleID, Mwaka, Swali и Wilaya столбцов. Это должно помочь повысить скорость запроса.

CREATE NONCLUSTERED INDEX IX_ID_ShuleID_Mwaka_Swali_Wilaya 
ON tblPAnswer1 (ID) 
INCLUDE (ShuleID, Mwaka, Swali, Wilaya); 
+1

Стол уже сгруппирован в столбце ID, почему NC снова? Более того, это не имеет значения для этого конкретного запроса. – dean

0

Каков размер таблицы? Вам могут потребоваться дополнительные индексы, поскольку вы не используете первичный ключ для запроса данных. В этой статье Pinal Dave имеется сценарий для определения недостающих индексов.

http://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/

Это обеспечивает хорошую отправную точку для оптимизации индекса.

+0

Мой стол имеет более 10 000 000 записей – Annael

1

Просто добавьте указатель на столбцы ShuleID, Mwaka, Swali и Wilaya. Порядок столбцов в индексе должен зависеть от распределения данных (столбцы с самыми разными значениями в нем должны быть первыми в индексе и т. Д.).

И если вам это нужно сверхбыстро, также включайте все остальные столбцы, используемые в запросе, чтобы иметь индекс покрытия для этого конкретного запроса.

РЕДАКТИРОВАТЬ: Вероятно, необходимо перемещать поплавок col (Swali) с индексированных на включенные столбцы.

Смежные вопросы