Разобраться с индексами, как?
-
- Уже с Приветом
- Posts: 660
- Joined: 22 Jan 2001 10:01
- Location: North Bay, CA
Разобраться с индексами, как?
Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Разобраться с индексами, как?
Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
С Новым Годом!
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 6789
- Joined: 01 Jun 2001 09:01
Re: Разобраться с индексами, как?
A. Fig Lee wrote:Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
С Новым Годом!
Присоединяюс! Налейте себе чего-нибудь покрепче, сразу понятно станет. Если у вас есть запрос типа:
select sto_gramm from magazin, stakan where magazin.krepost>40 and magazin.ob'em > stakan.ob'em*10
то индексы надо повесить на все выражения, использованые с where, а именно magazin.krepost, magazin.ob'em и stakan.ob'em*10
-
- Уже с Приветом
- Posts: 660
- Joined: 22 Jan 2001 10:01
- Location: North Bay, CA
Re: Разобраться с индексами, как?
A. Fig Lee wrote:Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
С Новым Годом!
И Вас туда же!
А если подумать?
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Разобраться с индексами, как?
Pingvin wrote:A. Fig Lee wrote:Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
С Новым Годом!
И Вас туда же!
А если подумать?
Ну какой SQL на Новый Год, если подумать?
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 660
- Joined: 22 Jan 2001 10:01
- Location: North Bay, CA
Re: Разобраться с индексами, как?
A. Fig Lee wrote:Ну какой SQL на Новый Год, если подумать?
А я не хочу проблемы в Новый Год переносить, лучше их на кого-нибудь переложить .
Можем оставить обсуждение на опохмел.
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: Разобраться с индексами, как?
Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
Заплатить хорошему специалисту
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Новичок
- Posts: 23
- Joined: 13 Sep 2002 20:23
- Location: Vilnius, Lithuania
Re: Разобраться с индексами, как?
Dmitry67 wrote:Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
Заплатить хорошему специалисту
А может сначала запустить Index Tuning Wizard из Enterprise Manager?
-
- Уже с Приветом
- Posts: 660
- Joined: 22 Jan 2001 10:01
- Location: North Bay, CA
Re: Разобраться с индексами, как?
Rolandas wrote:
А может сначала запустить Index Tuning Wizard из Enterprise Manager?
Когда я запускаю Index Tuning Wizard (проверяю при этом файл, содержащий все queries), то получаю ошибку: "The server returned an error attempting to either create a temporary table or index statistics."
Я подключаюсь к базе как dbo, так что тут не должно быть никаких проблем, тем более, что создать индексы из Enterprise Manager я могу.
На что можно еще посмотреть?
-
- Новичок
- Posts: 23
- Joined: 13 Sep 2002 20:23
- Location: Vilnius, Lithuania
Re: Разобраться с индексами, как?
Pingvin wrote:Когда я запускаю Index Tuning Wizard (проверяю при этом файл, содержащий все queries), то получаю ошибку: "The server returned an error attempting to either create a temporary table or index statistics."
Я подключаюсь к базе как dbo, так что тут не должно быть никаких проблем, тем более, что создать индексы из Enterprise Manager я могу.
На что можно еще посмотреть?
В именах таблиц имеются не только латинские буквы?
Не все таблицы owned by dbo?
И вообще, лучше ему дать настоящий workload.
Смотри Index Tuning Wizard Best Practices:
http://support.microsoft.com/default.as ... -us;311826
-
- Уже с Приветом
- Posts: 15311
- Joined: 30 Apr 2003 16:43
Re: Разобраться с индексами, как?
Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
Правильная модель данных и индексы на вторичных ключах (имея в виду что индексы на первичных созданы автоматически) решают львиную долю проблем производительности.
Дополнительные индексы (нужда в которых есть явный признак недостатков модели данных) конструируются на основе анализа конкретных проблематичных запросов, которые в свою очередь выявляются либо на основе измерения потребляемых ресурсов и/или времени ответа, а лучше с помощью анализа планов доступа.
Насколько я знаю в SQL имеется доступ к параметрам плана доступа. Добавьте к этому знания и здравый смысл, и я думаю, никакие Wizard-ы Вам не нужны.
-
- Уже с Приветом
- Posts: 660
- Joined: 22 Jan 2001 10:01
- Location: North Bay, CA
Re: Разобраться с индексами, как?
zVlad wrote:Pingvin wrote:Есть database на MS SQL 2000, некоторые запросы работают медленно. Как понять, какие индексы нужно добавить, чтобы ускороть работу запросов?
Правильная модель данных и индексы на вторичных ключах (имея в виду что индексы на первичных созданы автоматически) решают львиную долю проблем производительности.
Дополнительные индексы (нужда в которых есть явный признак недостатков модели данных) конструируются на основе анализа конкретных проблематичных запросов, которые в свою очередь выявляются либо на основе измерения потребляемых ресурсов и/или времени ответа, а лучше с помощью анализа планов доступа.
Насколько я знаю в SQL имеется доступ к параметрам плана доступа. Добавьте к этому знания и здравый смысл, и я думаю, никакие Wizard-ы Вам не нужны.
Спасибо, это я сделаю. Чувствую, что проблема у меня не в индексах, а вернее не только в них.
Дело в том, что задержка происходит на уровне испольнения функции. Когда образуем primary key, мы берем уникальный номер и добавляем к нему 12 цифр, представляющих собой дату и время, в которое добавляется запись, а затем добавляется трехбуквенный код оператора. Так как часть данных была создана до этой системы, то у них этот идентификатор представляет собой число + "matched". Фунция, представленная ниже, берет идентификатор и возвращает дату и время добавления функции или "н/а". Большинство запросов использует это число в дальнейшем.
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create function dbo.DateTimeAdded(@Item as varchar(50) )
RETURNS VARCHAR(50)
WITH SCHEMABINDING
AS
BEGIN
declare @dta as varchar(50)
if len(@Item)<8 or @Item like '%matched'
set @dta= 'n/a'
else
set @dta= LEFT(RIGHT(RIGHT(LEFT(@Item, LEN(@Item) - 3), 14), 8 ), 2) + '/' + LEFT(RIGHT(RIGHT(LEFT(@Item, LEN(@Item)- 3), 14), 6), 2) + '/' + RIGHT(RIGHT(LEFT(@Item, LEN(@Item)- 3), 14), 4) + ' ' + LEFT(RIGHT(LEFT(@Item, LEN(@Item)- 3), 14), 2)+ ':' + RIGHT(LEFT(RIGHT(LEFT(@Item, LEN(@Item)- 3), 14), 4), 2) + ':' + RIGHT(LEFT(RIGHT(LEFT(@Item, LEN(@Item)- 3), 14), 6), 2)
return @dta
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO