powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Про индексы ))
7 сообщений из 7, страница 1 из 1
Про индексы ))
    #34746056
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал тут разбираться с индексами и понял, что это самая шаманская вещь ((. Неопытному чувачку никогда не понять самому где и какие индексы лучше применять. Описалово все по индексам прочитал что есть, все равно ясности нету )).
Если кто знает, скиньте инфу на статьи/книги про то, как лучше строить индексы для хранилища данных(OLAP -система). Принципы постраяния OLAP - систем общий есть, значит должны быть и общие принципы создавания индексов для таких систем.

А насущный вопрос таков.
Есть таблица, допустим из 10 полей. Данные в нее закачиваються раз в месяц. Причем допустим каждый месяц закачиваеться 500 000 записей.Столбец 1 принимает только 6 возможных значений.
Данные закачиваються пачками, то есть сначала вставляються все данные, у которых столбец1 имеет значение1, затем значение2 и так до значения6.
Из прочитанного я сделал вывод, что по столбец1 делаем кластерный индекс. Правильно?

Запросы, которые идут к этой таблицы всегда содержат в условии/выборку/группировку проверку по столбец1.
select ....
from таблица1
where столбец1 = значение3.

Помимо этого в группировках/выбираться/в условии могут быть еще 3 столбца в произвольной комбинации но как правило упорядоченно.
Стоит ли создавать индексы для каждой комбинации:(12)(13)(14)(123)(134) и так далее
А при каждой выборке писать явно какой индекс использовать?
Или просто хватит кластерного индекса по столбец1 + индексы (12)(123)(1234) ???
...
Рейтинг: 0 / 0
Про индексы ))
    #34746629
grach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.rusug.ru/index.php?tree=20&mode=view&id=29&full=1
...
Рейтинг: 0 / 0
Про индексы ))
    #34746722
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нее, не катит )) это я уже в первую очередь прочитал. Мало примеров. Нужно что бы были примеры типовых таблиц и типовых индексов для них, как в шахматах - коней в центр, ладей - на открытые линиии, пешками - захватывай пространство. Есть ли такие общие принципы для индексов????
...
Рейтинг: 0 / 0
Про индексы ))
    #34747086
_makSim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--__Александр__--... Данные в нее закачиваються раз в месяц. Причем допустим каждый месяц закачиваеться 500 000 записей.Столбец 1 принимает только 6 возможных значений.
Данные закачиваються пачками, то есть сначала вставляються все данные, у которых столбец1 имеет значение1, затем значение2 и так до значения6....


Очевидно, что уместен кластерный индекс, где первым полем будет Дата, а вторым Столбец1. В противном случае очень долго будет работать вставка.

Вероятнее всего вам лучше обойтись 1 кластерным индексом. Для OLAP, при выборке из таблицы фактов, часто выгодно использовать кластерный индекс по всем полям измерений, но каждая реализация, конечно, требует своего подхода...
...
Рейтинг: 0 / 0
Про индексы ))
    #34748957
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--__Александр__-- пишет:

> А насущный вопрос таков.
> Есть таблица, допустим из 10 полей. Данные в нее закачиваються раз в
> месяц. Причем допустим каждый месяц закачиваеться 500 000
> записей.Столбец 1 принимает только 6 возможных значений.
> Данные закачиваються пачками, то есть сначала вставляються все данные, у
> которых столбец1 имеет значение1, затем значение2 и так до значения6.
> Из прочитанного я сделал вывод, что по столбец1 делаем кластерный
> индекс. Правильно?

Нет. Если "Столбец 1 принимает только 6 возможных значений",
то по нему вполне возможно вообще индекса не надо делать.

> Помимо этого в группировках/выбираться/в условии могут быть еще 3
> столбца в произвольной комбинации но как правило упорядоченно.
> Стоит ли создавать индексы для каждой комбинации:(12)(13)(14)(123)(134)
> и так далее

Да, но только так, чтобы уникальных значений сочетаний полей
было бы в таблице много. А не шесть. МОжно уже в составной
индекс влючить твой столбец1 (желательно не первым).

При этом надо создавать индексы только для часто выполняемых запросов.

> А при каждой выборке писать явно какой индекс использовать?
Нет

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Про индексы ))
    #34749594
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так практически во всех запросах присутсвует условие столбец1 = "....."
То что я по нему создал кластерный индекс с повторяющимися строками. Это как бы разбило мою одну таблицу на 6, где все данные с одинаковым значением по столбцу1 храняться повозможности рядом. По идее, это должно дать выигрышь в скорости(пока еще не тестил). Возможно, более правильео разбить мою одну большую таблицу по столбцу1 на 6 более мелких таблиц. Пока над этим думаю.

Да, уровень селективности должен получаться более 80%. В книжке про это написано )).

Опаа??? А почему столбец1 нужно включать в составной индекс не первым???? НЕПОНЯТНО?!
На скока я знаю, во время выполнения запроса используеться только один индекс для каждой таблицы.
Допустим столбей1 - bank_id, столбец2 - f_contr, столбец3 - f_manager, столбец4 - date_begin/
таблица fr_ptcp содержит 3 000 000 000 строк.

Я сделал индексы кластерный для bank_id и обычный для
(bank_id,f_contr),(bank_id,f_contr,f_manager) и (bank_id,f_contr,f_manager,date_begin).

Вот например запрс
select distinct f_manager,count(f_contr)
from fr_ptcp
where bank_id = ' '
group by f_manager.

так вот поему если bank_id будет не первым в составном индексе, то будет хуже. Так, он у меня сразу откинет ненужные банки и будет считать быстрее.
Возможно, здесь лучше индекс (bank_id,f_manager,f_contr).
Плиз. Скажите, по какому принципу задавать порядок столбцов в составном индексе???
...
Рейтинг: 0 / 0
Про индексы ))
    #34749816
_makSim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для того чтобы понять, чем плох кластерный индекс с первым полем столбец1 , попробуйте вставить в вашу таблицу из 3 млрд. записей 500 тыс. записей, на которые она у вас увеличивается ежемесячно. ASE должен для этого сдвинуть большую часть данных этой таблицы.
Если время устроит - используйте.
В OLAP почти всегда присутствует размерность (поле в таблице) для дат и оно используется в запросах. А при вставке за очередной период (дату) данные спокойно ложаться в конец таблицы, если кластерный индекс начинается с даты. Время вставки будет отличаться ОЧЕНЬ сильно.
Если всё-таки первым будет поле столбец1 , то пусть лучше это будет обычный индекс.
И, вообще, для первого поля индекса 6 различных значений маловато.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Про индексы ))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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