Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Системные индексы? / 12 сообщений из 12, страница 1 из 1
04.10.2002, 17:42:47
    #32055611
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
При просмотре таблицы sysindexes обнаружил, что помимо индексов созданных мной, в этой таблице содержиться куча индексов с названиями типа _WA_Sys_name_6A5BAED2 . Причём доступ к ним как к индексам то есть например dbcc indexdefrag с ними не работает. Созданы они не для всех полей и не для всех таблиц.
Вопрос, что это?
Есть подозрение что это статистики. Тогда объясните почему они хранятся как индексы и что же такое статистика?
Если это индексы, автоматически создаваемые системой, то существует ли необходимость заводить свои собственные?
И вообще, про статистики хотелось бы компетентное мнение послушать, как с ними бороться?
...
Рейтинг: 0 / 0
04.10.2002, 18:28:58
    #32055616
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Да, это индексы статистики.
Не стоит их убивать, если нет других индексов (созданных вручную).
Для удаления служит DROP STATISTICS.
...
Рейтинг: 0 / 0
04.10.2002, 18:45:28
    #32055623
Vit.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Эти индексы были созданы сервером ,например, когда
отлаживались sp, использующие эту таблицу.
...
Рейтинг: 0 / 0
04.10.2002, 19:54:29
    #32055638
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
...
Рейтинг: 0 / 0
07.10.2002, 14:04:46
    #32055972
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Спасибо за ссылку.
И всё же вопрос остался.

Существует ли необходимость заводить свои собственные индексы или при достаточно продолжительном использовании система справляется с этой задачей не хуже?

Вопрос возник ещё и вот почему. При запуске IndexTuningWizard не даёт рекомендаций по созданию новых индексов, хотя при этом на таблице создан только PK, а запрос джойнится из нескольких таблиц и используются связки по нескольким полям.
...
Рейтинг: 0 / 0
07.10.2002, 14:26:16
    #32055986
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Давайте определимся, про что мы все-таки говорим.
Потому что индексы сервер самостоятельно НЕ создает.
А статистика это не тоже самое, что и индекс.
...
Рейтинг: 0 / 0
07.10.2002, 14:54:16
    #32056007
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Может быть организованы они и не так как индексы, но нам то от этого не холодно не жарко. А вот от того как построит execution plan SQL Server query optimizer, зависит скорость выполнения запроса.
Вот фрагмент.
Normally this fact is transparent to the user, but the query optimizer knows about the clustering columns and may avoid secondary fetches if only those column values are required on top of the secondary index columns for the query execution.
Может я чего-то не понял, но не означает ли это, что даже при отсутствии дополнительных индексов на внешних ключах, будет построен оптимальный по производительности запрос типа:

select * from t1 inner join t2 on t2.t1 = t1.id where t2.id = 123

Так зачем же нужны индексы? :)
...
Рейтинг: 0 / 0
08.10.2002, 15:24:17
    #32056371
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Может быть организованы они и не так как индексы, но нам то от этого не холодно не жарко

Тут вы не правы. Если вы построите индекс на поле с низкой селективностью, например, 2 различных значения на 1000 записей, то я сильно сомневаюсь, что сервер будет использовать такой индекс (кластерный не в счет). И решит он именно на основе статистики.

...Так зачем же нужны индексы?
В приведенном вами примере, если по t2.id есть кластерный индекс, то дополнительный индекс по t2.t1 не нужен.
Но это не значит, что он не нужен для запроса
select * from t1 inner join t2 on t2.t1 = t1.id
...
Рейтинг: 0 / 0
08.10.2002, 17:24:05
    #32056439
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Спасибо Glory, кажется я понял.
Статистики нужны для определения эффективности того или иного механизма выборки, в том числе и использования индекса.
Т.е. в принципе можно завести по таблице набор всех возможных индексов, а уж оптимизатор на основе статистик по ним решит использовать их или нет для конкретного запроса.
...
Рейтинг: 0 / 0
08.10.2002, 18:05:38
    #32056478
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Т.е. в принципе можно завести по таблице набор всех возможных индексов

В принципе можно.
На практике - зачем. Индекс требует больше места чем статистика. И если для того же поля с низкой селективностью серверу достаточно только статистики, то зачем же зря расходовать место на диске.
...
Рейтинг: 0 / 0
08.10.2002, 18:29:02
    #32056500
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
К ответу Glory хочу добавить, что индекс не только ускоряет выборку, но он еще замедляет вставку/обновление. Чрезмерно большое количество индексов может сильно замедлить эти операции.
...
Рейтинг: 0 / 0
09.10.2002, 10:30:35
    #32056632
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Системные индексы?
Спасибо, что просветили.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Системные индексы? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]