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

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

Да. Только начало года, но могут передумать и захотель и уникальность в приделах месяца... поэтому дата.
13 авг 09, 17:14    [7535144]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

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

Ну... не нужен он тут...
13 авг 09, 17:15    [7535158]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
vastok
Ну... не нужен он тут...
Ничего не понял, кто не нужен?
13 авг 09, 17:17    [7535170]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
vastok
iap,

Ну... не нужен он тут...
Кто? ???

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

Откуда:
Сообщений: 104760
Паганель
vastok
Ну... не нужен он тут...
Ничего не понял, кто не нужен?

Скрипач )))
13 авг 09, 17:18    [7535173]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

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

можно считать, что первичный ключ - обсуждаемый нидекс. Дело не в первичном ключе. Так что можно этот вопрос опустить.
13 авг 09, 17:19    [7535180]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Vowk
Member

Откуда:
Сообщений: 7636
iap
Неужели Вы про первичный ключ?!

Я пользуюсь индексами и далеко не всегда создаю первичный ключ. Только лишь для связи с другими таблицами.
13 авг 09, 17:20    [7535186]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Glory
Member

Откуда:
Сообщений: 104760
vastok
iap,

можно считать, что первичный ключ - обсуждаемый нидекс.

О, неужели это все таки было сказано !
13 авг 09, 17:20    [7535194]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Konst_One
Member

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

можно считать, что первичный ключ - обсуждаемый нидекс.

О, неужели это все таки было сказано !


+1
13 авг 09, 17:20    [7535197]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
vastok
Паганель,
Ключ такой: DAT+FIRMA+DOCNOM
Vowk
Я пользуюсь индексами и далеко не всегда создаю первичный ключ. Только лишь для связи с другими таблицами.
Я уже совсем запутался
то он есть, то voila и его уже нету
13 авг 09, 17:23    [7535213]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Deff
Member

Откуда: Пермь
Сообщений: 18323
vastok
Завязался жаркий спор по организации индексов:

Есть таблица для хранения уникальных номеров документа. Уникальность хранится по фирме в пределах года.

Структура:
DAT - Дата
FIRMA - Строка(9)
IDDOC- Строка(9)
DOCNOM - Целое (int)

К таблице выполняется запросы:
|SELECT
| [IDDOC]
|FROM
| [MyBase].[DBO].[ВсеНомера]
|WHERE
| (DAT=:НачПериода)
| and
| (FIRMA=:Фирма)
| and
| ([DOCNOM]=:НомерДокумента)
| and
| ([IDDOC]<>:ЭтотДокумент)


Dat - дата начала года (пусть после 3-х лет работы)
FIRMA - до 5 фирм
DocNom - Порядка 5000-10000 за год

как я сказал, номер не может повторяться в одной фирмы в приделах года.

Вопрос: какой индекс эффективнее?

Вариант 1: DOCNOM+FIRMA+DAT
Вариант 2: DAT+FIRMA+DOCNOM
вариант 3:?

Вариант 2 или ( вариант 3 FIRMA+DAT+DOCNOM). Потому что помимо данного запроса, будут запросы типа получить документы за весь год по фирме или нескольким. Делайте первчиный клястерный ключ.
13 авг 09, 17:24    [7535220]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

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

Это как то меняет дело?
13 авг 09, 17:31    [7535274]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

Откуда:
Сообщений: 38
Deff
vastok
Завязался жаркий спор по организации индексов:

Есть таблица для хранения уникальных номеров документа. Уникальность хранится по фирме в пределах года.

Структура:
DAT - Дата
FIRMA - Строка(9)
IDDOC- Строка(9)
DOCNOM - Целое (int)

К таблице выполняется запросы:
|SELECT
| [IDDOC]
|FROM
| [MyBase].[DBO].[ВсеНомера]
|WHERE
| (DAT=:НачПериода)
| and
| (FIRMA=:Фирма)
| and
| ([DOCNOM]=:НомерДокумента)
| and
| ([IDDOC]<>:ЭтотДокумент)


Dat - дата начала года (пусть после 3-х лет работы)
FIRMA - до 5 фирм
DocNom - Порядка 5000-10000 за год

как я сказал, номер не может повторяться в одной фирмы в приделах года.

Вопрос: какой индекс эффективнее?

Вариант 1: DOCNOM+FIRMA+DAT
Вариант 2: DAT+FIRMA+DOCNOM
вариант 3:?

Вариант 2 или ( вариант 3 FIRMA+DAT+DOCNOM). Потому что помимо данного запроса, будут запросы типа получить документы за весь год по фирме или нескольким. Делайте первчиный клястерный ключ.



Нет. Обсуждаем индекс только в контексте этого запроса. Спор только об этом.
13 авг 09, 17:33    [7535282]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

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

К тому же Вы предложили вариант 3 )))
13 авг 09, 17:34    [7535292]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
выполните 3 запроса
select docnum, count(*) from table group by docnum
select firma, count(*) from table group by firma
select dat, count(*) from table group by dat
в индексе ставите первую колонку, где больше всего строк, вторую колонку среднее общее количество строк, ну и 3ью колонку - оставшуюся.

для спящего время бодрствования равносильно сну
13 авг 09, 17:40    [7535347]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
хм, можно проще :)
select 'docnum', count(distinct docnum) from table
select 'firma', count(distinct firma) from table
select 'dat', count(distinct dat) from table

для спящего время бодрствования равносильно сну
13 авг 09, 17:41    [7535357]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Konst_One
Member

Откуда:
Сообщений: 11515
ежу понятно, что у него так:

FIRMA>DOCNOM>DAT
13 авг 09, 17:42    [7535366]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Glory
Member

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

Это как то меняет дело?

Коренным образом меняет. Потому что за полями, которые не входят в индекс, но присутствуют в запросе, серверу придется куда-то обращаться.
Так что декларируемая вами уникальность позволяет предложить индекс из всех 4 полей. Чтобы серверу не пришлось за IDDOC лезть в таблицу или еще хуже забить на индекс и просто сканировать ее
13 авг 09, 17:43    [7535381]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Konst_One
ежу понятно, что у него так:

FIRMA>DOCNOM>DAT

т.е. фирм у него больше, чем дней в году?
13 авг 09, 17:46    [7535403]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Konst_One
Member

Откуда:
Сообщений: 11515
да, у него всего несколько уникальных значений в поле DAT

...
01.01.2007
01.01.2008
01.01.2009
...
13 авг 09, 17:47    [7535417]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Konst_One
да, у него всего несколько уникальных значений в поле DAT

...
01.01.2007
01.01.2008
01.01.2009
...

если в dat хранится именно год, тогда да.
и количество фирм больше, чем документов по ним?
не ну это могут быть конечно чернющие афшорки, как опята осенью, которые умирают после первой операции..
13 авг 09, 17:59    [7535500]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Konst_One
Member

Откуда:
Сообщений: 11515
такие чернюшные, что автору даже стыдно PK сделать по ним =)
13 авг 09, 18:00    [7535511]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
vastok
Member

Откуда:
Сообщений: 38
Алексей2003,

По-вашему получается DOCNOM>FIRMA>DAT
13 авг 09, 18:06    [7535560]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Простите, но именно для этого запроса
SELECT
[IDDOC]
FROM
[MyBase].[DBO].[ВсеНомера]
WHERE
(DAT=:НачПериода)
and
(FIRMA=:Фирма)
and
([DOCNOM]=:НомерДокумента)
and
([IDDOC]<>:ЭтотДокумент)

"Идеальный" индекс -- dat, firma, docnom (в любом порядке), iddoc

ЗЫ Внимательно не читал :)
13 авг 09, 18:09    [7535579]     Ответить | Цитировать Сообщить модератору
 Re: Спор. Принципы организации индексов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
vastok
Алексей2003,

По-вашему получается DOCNOM>FIRMA>DAT

ну значит получается вариант №1..
13 авг 09, 18:11    [7535598]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить