Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
Начал тут разбираться с индексами и понял, что это самая шаманская вещь ((. Неопытному чувачку никогда не понять самому где и какие индексы лучше применять. Описалово все по индексам прочитал что есть, все равно ясности нету )). Если кто знает, скиньте инфу на статьи/книги про то, как лучше строить индексы для хранилища данных(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) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2007, 22:30 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
http://www.rusug.ru/index.php?tree=20&mode=view&id=29&full=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 10:21 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
Нее, не катит )) это я уже в первую очередь прочитал. Мало примеров. Нужно что бы были примеры типовых таблиц и типовых индексов для них, как в шахматах - коней в центр, ладей - на открытые линиии, пешками - захватывай пространство. Есть ли такие общие принципы для индексов???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 10:41 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
--__Александр__--... Данные в нее закачиваються раз в месяц. Причем допустим каждый месяц закачиваеться 500 000 записей.Столбец 1 принимает только 6 возможных значений. Данные закачиваються пачками, то есть сначала вставляються все данные, у которых столбец1 имеет значение1, затем значение2 и так до значения6.... Очевидно, что уместен кластерный индекс, где первым полем будет Дата, а вторым Столбец1. В противном случае очень долго будет работать вставка. Вероятнее всего вам лучше обойтись 1 кластерным индексом. Для OLAP, при выборке из таблицы фактов, часто выгодно использовать кластерный индекс по всем полям измерений, но каждая реализация, конечно, требует своего подхода... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 11:49 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
--__Александр__-- пишет: > А насущный вопрос таков. > Есть таблица, допустим из 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2007, 18:24 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
Так практически во всех запросах присутсвует условие столбец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). Плиз. Скажите, по какому принципу задавать порядок столбцов в составном индексе??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 08:04 |
|
||
|
Про индексы ))
|
|||
|---|---|---|---|
|
#18+
Для того чтобы понять, чем плох кластерный индекс с первым полем столбец1 , попробуйте вставить в вашу таблицу из 3 млрд. записей 500 тыс. записей, на которые она у вас увеличивается ежемесячно. ASE должен для этого сдвинуть большую часть данных этой таблицы. Если время устроит - используйте. В OLAP почти всегда присутствует размерность (поле в таблице) для дат и оно используется в запросах. А при вставке за очередной период (дату) данные спокойно ложаться в конец таблицы, если кластерный индекс начинается с даты. Время вставки будет отличаться ОЧЕНЬ сильно. Если всё-таки первым будет поле столбец1 , то пусть лучше это будет обычный индекс. И, вообще, для первого поля индекса 6 различных значений маловато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 10:13 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=61&tid=2011961]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 365ms |

| 0 / 0 |
