|
|
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
Есть таблица ObJ вида: Obj_Id, Atr1, Atr2, … , AtrN Индексы по всем атрибутам. Задача: часто и быстро выдавать все (или требуемые) атрибуты объектов с заданными атрибутами. Код: plaintext 1. 2. 3. 4. В перспективе планируется, что количество атрибутов может достичь тысяч, но для каждого объекта будет заполнен от силы десяток атрибутов. В связи с этим решил разбить эту таблицу на 4. Obj: Obj_Id Atr: Atr_Id Atr_Name Atr_Val: Atr_Val_Id Atr_Val Obj_Atr: Obj_Id Atr_Id Atr_Val_Id В таблице Obj_Atr создал индексы: <Obj_Id, Atr_Id>, <Atr_Id, Atr_Val>. В таблице Atr_Val сделал индексы <Atr_Val_Id> и <Atr_Val>. В таблице Atr сделал индексы <Atr_Id> и <Atr_Name>. Сделал вьюху Obj_Atr_v Код: plaintext 1. 2. 3. 4. 5. 6. 7. Пытаюсь написать запрос, выбирающий требуемые данные. Какие варианты не пробую, работает существенно дольше исходного запроса. Спецы, подскажите: Я принял неправильное решение, решив разбить таблицу? Или неправильно её разбил? Или косячу с запросом и должно работать не сильно дольше? Или всё правильно и нужно просто определиться, что важнее скорость или объём места для данных и выбирать разбивать или нет в зависимости от этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 10:27 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
Я б XDB посмотрел,если оракул у вас, и все атрибуты в одно XML поле запихал, оно и маштабируется тогда проще. А like всеравно индекс не использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 10:46 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
_kyky, Используется MySQL в данном случае. В нём есть что-то подобное? Но про XML поля всё равно почитаю, так как Oracl-ом тоже интересуюсь, для других задач. Спасибо. Atr15 like ‘text3%’ - использует индекс. Но MySQL вроде всё равно только по одному атрибуту ищет по индексу, а потом просто записи проверяет на соответствие остальных условий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:40 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
Не юзал МYSQL, вообще там хранимые процедуры есть не представляю, в которые можно логику запихнуть, если нет или нет готовых пакетов для поиска по контексту xml, то смысла это конечно не имеет. МYSQL теперь тоже однако оракуль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 12:32 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
_kyky, А в Oracle как бы это работало по времени (по сравнению с исходным и с моим вариантом)? А то почитал чуток про XML поля. Конечно, всё красиво, но такое чувство, что логика обработки таких полей не самая лёгкая и скорость может ещё больше упасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 12:55 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
Прочитав соседние ветки созданные после моей понял, что данная проблема довольно актуальна :) И этот велосипед называется EAV. Тенцер даже обзор его написал. Большинство форумчан в разной степени против этого метода. Обсуждений этой темы на форму много, но пока вменяемого противопоказания не нашёл, в основном эмоции и необоснованные мнения. Видимо нужно ещё читать и читать. А то мож действительно зря я с этим велосипедом замутил. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 09:23 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
Кстити вопрос по скорости решился после расширением индекса в таблице Obj_Atr <Obj_Id, Atr_Id> в <Obj_Id, Atr_Id, Atr_Val> и добавлением на всякий случай индекса <Atr_Val>. Сегодня ещё на нормальных примерах тесты по гоняю, но на предварительных скорость практически сравнялась с исходной таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 09:28 |
|
||
|
Разбиение одной таблицы на несколько
|
|||
|---|---|---|---|
|
#18+
kink wrote: > Большинство форумчан в разной степени против этого метода. > Обсуждений этой темы на форму много, но пока вменяемого противопоказания > не нашёл, в основном эмоции и необоснованные мнения. противопоказаний и быть не может, просто это -- особенный подход, у него есть свои особенности, которые дают как преимущества, так и недостатки. Всё это надо знать, и соответственно решать, что тебе выгоднее : использовать преимущества или не бороться с недостатками. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 14:18 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36570740&tid=1542769]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 437ms |

| 0 / 0 |
