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

Откуда: Київ
Сообщений: 10428
Такая таблица

create table t
(
id uniqueidentifier not null default (newid()) primary key,
flag int 
)


здесь флаг может быть от 0 до 1024, но в основной массе 0 или 1.

Стоит ли строить индекс id, flag ?

наиболее частые выборки по id+flag<>0
1 окт 12, 16:26    [13250820]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37254
Индексы делают на таблицы, но для запросов.
1 окт 12, 16:27    [13250835]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Maxx
Member [скрыт]

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

для 1024 инт не нужен ,можно и в борлее мелкий тип вписаться , да и зачем id как newid ?
1 окт 12, 16:31    [13250868]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
primary key - это уже индекс. Притом уникальный и кластерый (судя по коду).
Зачем добавлять тут Flag не пойму?
Сделать узкий индекс? Для этого инфы нет - то что в WHERE стоит условие по полям, это не значит что не используются другие колонки.
1 окт 12, 16:33    [13250883]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Maxx, совершенно неважно какой тип и какое распределение во Flag.
1 окт 12, 16:34    [13250897]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mnior
Maxx, совершенно неважно какой тип и какое распределение во Flag.

ето вы мне ответили на следующий вапрос Винипуха ?
1 окт 12, 16:36    [13250913]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
наиболее частые выб
Guest
Winnipuh
наиболее частые выборки по id+flag<>0

если id (который уникальный и кластерный) всегда есть в фильтре, то какая разница что там еще выбирается/фильтруется?

в id можно секвеншиал по дефолту вставлять, а не newid. не такая жопа будет.
1 окт 12, 16:41    [13250966]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Maxx,
Ссори, голова ... попел ...
1 окт 12, 17:31    [13251451]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mnior,
да без проблемм,я вообщем так и понял
1 окт 12, 17:52    [13251621]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
Индексы делают на таблицы, но для запросов.


спасибо, а я не написал разве об этом?
1 окт 12, 18:51    [13251988]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
наиболее частые выб
Winnipuh
наиболее частые выборки по id+flag<>0

если id (который уникальный и кластерный) всегда есть в фильтре, то какая разница что там еще выбирается/фильтруется?

в id можно секвеншиал по дефолту вставлять, а не newid. не такая жопа будет.


можно было бы, я не написал версию сервера: 2005-2012
1 окт 12, 18:52    [13251989]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Mnior
primary key - это уже индекс. Притом уникальный и кластерый (судя по коду).
Зачем добавлять тут Flag не пойму?
Сделать узкий индекс? Для этого инфы нет - то что в WHERE стоит условие по полям, это не значит что не используются другие колонки.


да, по ключу индекс есть, естественно. Я думал, можно ли что-то (и нужно ли) придумать для флага... Если скажем ан 10 млн записей будет скажем 5 млн =0, 3 млн =1, 2 млн =2.

1 окт 12, 18:54    [13251999]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Думаю полезно будет
Раз
Два
1 окт 12, 19:03    [13252042]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Maxx
Думаю полезно будет
Раз
Два
IMHO, это один из тех случаев, когда абстракция работает "без понимания конкретной реализации". (см. ветку 13198315)
И таких вещей много, очень много.
Никакие подробности реализации не опишут суть, но стабильно "приоткроют дверь".
2 окт 12, 01:12    [13253261]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
Winnipuh
Стоит ли строить индекс id, flag ?

наиболее частые выборки по id+flag<>0
Если сделать такой индекс, то при выборке не нужно будет делать лукап. Фактически, такой индекс будет копией таблицы, и выборка будет идти чуть быстрее.

На практике индекс не нужен, лукап не повлияет сильно на производительность.

Может быть имеет смысл не делать ПК на ИД (наверняка он же у вас кластерный?), а сделать уникальный индекс на ИД с включённой колонкой flag - это сделает более быстрой вставку и выборку.

Но это всё имеет смысл при действительно большой нагрузке, намного больше тысячи запросов/сек. В противном случае можно не извращаться.
2 окт 12, 10:11    [13253909]     Ответить | Цитировать Сообщить модератору
 Re: Как создать оптимальный индекс для такой таблицы?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mnior
Никакие подробности реализации не опишут суть, но стабильно "приоткроют дверь".

сие уже полдела ,ИМХО
2 окт 12, 14:01    [13255557]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить