Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Слетают индексы ...  [new]
potkin
Member

Откуда: Ungvar
Сообщений: 1071
MS SQL 2008 Express
Есть таблица и индекс:
CREATE TABLE [dbo].[F130Cap](
	[F130CapID] [int] IDENTITY(1,1) NOT NULL,
	[F130CapDate] [date] NOT NULL,
        ...
); 
CREATE INDEX IX_F130Cap_F130CapDate ON F130Cap (F130CapDate);


Ситуация такая:
При добавлении хоть одной записи в таблицу F130Cap выборка данных из этой таблицы начинает тормозить (BETWEEN @DATA1 and DATA2).
Пересоздаю индекс или программно или из Менеджера, всё летает.
То есть после каждой записи надо пересоздавать Индекс IX_F130Cap_F130CapDate.

Лог ошибок не показал.
17 дек 13, 11:57    [15303685]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
potkin
Пересоздаю индекс или программно или из Менеджера, всё летает.
То есть после каждой записи надо пересоздавать Индекс IX_F130Cap_F130CapDate.

Это называется "надо обновлять статистику"
17 дек 13, 11:58    [15303701]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
potkin
Member

Откуда: Ungvar
Сообщений: 1071
Glory
Это называется "надо обновлять статистику"

После каждой записи что ли ???
Ну я понимаю раз в неделю, ну хотя бы раз в сутки, например ночью.
17 дек 13, 12:09    [15303787]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
potkin
После каждой записи что ли ???
Ну я понимаю раз в неделю, ну хотя бы раз в сутки, например ночью.

А в чем прелесть вашего индекса без актуальной статитстики ?
17 дек 13, 12:10    [15303796]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
potkin,

Не верю. Вы чего то недоговариваете или не понимаете.
Да и вообще голословно как то. Что значит тормозит, что значит летает? Цифры? Планы? Какие конкретно запросы вы выполняете? В какой последовательности? У вас запросы или хранимые процедуры?
17 дек 13, 23:26    [15308051]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
potkin
Member

Откуда: Ungvar
Сообщений: 1071
Mind
Что значит тормозит, что значит летает?

Новые записи не индексируются.
То есть всё равно, что удалить индекс.
Mind
Цифры?

~ 10 000 000 записей в таблице. Выборка по полю Дата.
Всё равно, что нет индекса и одновременно 20-30 пользователей делают SELECT.
Mind
Какие конкретно запросы вы выполняете?

Даже примитивный тормозит
SELECT * FROM F130Cap WHERE F130CapDate BETWEEN @F130CapDate1 and @F130CapDate2

После пересоздания индекса летает.
Mind
У вас запросы или хранимые процедуры?

И то и другое.
Но в основном запросы.
19 дек 13, 12:46    [15316869]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
potkin
Новые записи не индексируются.
То есть всё равно, что удалить индекс.

Наличие индекса НЕ обязывает сервер использовать его.
Это вовсе не тоже самое, что "Новые записи не индексируются"


potkin
Даже примитивный тормозит
SELECT * FROM F130Cap WHERE F130CapDate BETWEEN @F130CapDate1 and @F130CapDate2

10 млн записей в куче, выборка всех полей, непокрывающий индекс - с чего вы решили, что ваш индекс выгоден ?
19 дек 13, 12:51    [15316931]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34015
Блог
планы запросов где? (хороший и плохой)

а проблема скорее всего в том, что не обновляется статистика, т.к. таблица большая, а количество обновленных/добавленных данных - маленькое
19 дек 13, 12:53    [15316953]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
potkin
Member

Откуда: Ungvar
Сообщений: 1071
Glory
Наличие индекса НЕ обязывает сервер использовать его.

Но после пересоздания индекса или обновлении статистики - всё летает!
Glory
10 млн записей в куче, выборка всех полей, непокрывающий индекс - с чего вы решили, что ваш индекс выгоден ?

Из 10 лимонов могут соответствовать условию WHERE только 100 записей.
Ну и заменить * на F130CapID
Критик
планы запросов где

Зачем?
Так привёл простой запрос.
SELECT F130CapID FROM F130Cap WHERE F130CapDate BETWEEN @F130CapDate1 and @F130CapDate2

Таблица конечно имеет реляции, но их на тестовой БД удалял нафиг.
В таблице оставил 2-а индекса PK_F130Cap and IX_F130Cap_F130CapDate
19 дек 13, 23:56    [15320611]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
potkin
Из 10 лимонов могут соответствовать условию WHERE только 100 записей.
Так могут или соответствуют? Или вы нам предлагаете угадать? Или вы правда думаете что план запроса будет одинаковым и всегда оптимальным в не зависимости от того 100 строк будет выбираться или пол таблицы?
potkin
Критик
планы запросов где

Зачем?
Так привёл простой запрос.
SELECT F130CapID FROM F130Cap WHERE F130CapDate BETWEEN @F130CapDate1 and @F130CapDate2
Если хотите чтобы вам помогли - отвечайте на вопросы. Или вы считаете что, если запрос очень простой, то и планы смотреть не нужно?
20 дек 13, 01:23    [15320865]     Ответить | Цитировать Сообщить модератору
 Re: Слетают индексы ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
potkin
Glory
Наличие индекса НЕ обязывает сервер использовать его.

Но после пересоздания индекса или обновлении статистики - всё летает!

Не тупите.
Оптимизатор сам _выбирает_, что ему использовать в запросе.

potkin
Из 10 лимонов могут соответствовать условию WHERE только 100 записей.
Ну и заменить * на F130CapID

А про 100 записей сервер откуда узнает ? Прямо из вашего мозга прочитает ?

potkin
Так привёл простой запрос.
SELECT F130CapID FROM F130Cap WHERE F130CapDate BETWEEN @F130CapDate1 and @F130CapDate2

Вы уж определитесь с текстом запроса

potkin
В таблице оставил 2-а индекса PK_F130Cap and IX_F130Cap_F130CapDate

начиналось все с одного индекса. теперь их уже два. А в действительности сколько ?
20 дек 13, 10:04    [15321553]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить