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

Откуда:
Сообщений: 660
Привет
Есть таблица примерно 20 МИО строк
Если нет ниодного индекса то ее размер 2 гига
добавляю кластерный индекс по полю bigint - размер индекса 6 мегабайт
а вот добавляю ее один обычный индекс по полю datetime - и размер 2 индексов уже 400 мегабайт

вопрос - почему такой прирост - уникальный индекс 6 метров а индекс где есть повторяющиеся поля почти 400
а если в базе 5 индексов - то размер базы фактически удваивается

что я делаю не так подскажите
13 окт 12, 19:13    [13313909]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
вопрос - почему такой прирост - уникальный индекс 6 метров

Он прежде всего кластерный. Т.е. он и есть сама таблица
13 окт 12, 19:17    [13313923]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Glory,

дык меня не удивляет размер кластерного в 6 метров
меня удивляет размер по полю datetime размером в 400 метров
13 окт 12, 20:19    [13314171]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Alexander_fx,

перестроил индекс с fillfactor =100 стало 490 мегабайт на 2 индекса вместо 400
13 окт 12, 20:29    [13314209]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
дык меня не удивляет размер кластерного в 6 метров

Еще раз - размер кластерного индексае есть размер таблицы.
Потому что кластерный индекс и есть таблица

Обратитесь в хелп к статьям http://msdn.microsoft.com/en-us/library/ms187445.aspx
13 окт 12, 20:32    [13314223]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Glory,

да понимаю я про кластерный
непонимаю как 20 000 000 строк по 8 байт дают индекс размером 490 мегабайт с fill factor 100
13 окт 12, 20:34    [13314227]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
непонимаю как 20 000 000 строк по 8 байт

любой некластерный индекс включает в себя ключ кластерного индекса
13 окт 12, 20:39    [13314252]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Glory,

то есть если я предполагаю создание 5-10 индексов то мне выгоднее добавить свое поле id типа int и обозвать его кластерным индексом чем использовать текущий столбец типа bigint ?
13 окт 12, 21:00    [13314326]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
то мне выгоднее

Вы какую цель то себе поставили ?
13 окт 12, 21:03    [13314339]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
таблица большая и без индексов чтение 2 гигов уже занимает заметное время
решил под конкретные запросы построить индексы - и увидел существеный прирост размеров базы
вот и стал думать что делаю не так
13 окт 12, 21:08    [13314364]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
таблица большая и без индексов чтение 2 гигов уже занимает заметное время
решил под конкретные запросы построить индексы - и увидел существеный прирост размеров базы
вот и стал думать что делаю не так

Вы закон сохранения знаете ?
Вы хотите что-то ускорить, не затратив для этого ничего ?
13 окт 12, 21:11    [13314379]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Glory,

дык не халявщик я
просто не знал что кластерный индекс прибавляется к каждому следующему
вот теперь пытаюсь осмыслить а нужен ли мне вообще кластерный индекс
база только для чтения
5 индексов
есть ли смысл делать кластерный вообще?
13 окт 12, 22:28    [13314615]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alexander_fx
Glory,
база только для чтения
5 индексов
есть ли смысл делать кластерный вообще?
Ну если для ваших запросов для чтения не нужен кластерный индекс, то не делайте его.
13 окт 12, 22:35    [13314646]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
Alexander_fx
есть ли смысл делать кластерный вообще?
Всё зависит от самих запросов.

Ну и если не делать кластерного индекса, то на другие индексы потребуется столько же места, ничего не выйграете.
Alexander_fx
просто не знал что кластерный индекс прибавляется к каждому следующему
Если не будет кластерного индекса, то ведь будет прибавляться что то другое, правильно? Ведь строки в индексах должны как то ссылаться на записи с данными?
13 окт 12, 22:52    [13314708]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
alexeyvg,

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

собственно меня удивило что для хранения обычного индекса потребовалось в 3 раза места больше чем занимают его данные
20 мио строк с полем bigint это 150 метров а индекс по этому полю - 450\вот это и прибило
13 окт 12, 22:57    [13314726]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17423
автор
разници особой нет - а с кластерным хоть понятно как данные лежат

без кластерного тоже понятно
автор
создал простой индекс без наличия кластерного и с наличием

первичный ключ у таблицы был?
14 окт 12, 01:41    [13315156]     Ответить | Цитировать Сообщить модератору
 Re: Размер индексов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
собственно меня удивило что для хранения обычного индекса потребовалось в 3 раза места больше чем занимают его данные
20 мио строк с полем bigint это 150 метров а индекс по этому полю - 450\вот это и прибило

А вы расскажите, по какой методике вы рассчитали, что индекс должен занимать 150МБ, а не 450 ?
14 окт 12, 11:53    [13315450]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить