|
|
|
Как правильно делать view?
|
|||
|---|---|---|---|
|
#18+
Здраствуйте, извините за вопрос ламерский. Попытка через три реальные таблицы реализовать произвольное количество "виртуальных" таблиц, с произвольным набором полей... Вот эти три таблички: objects (ID,NAME) - хранит названия таблиц, meta_desk (ID,NAME,OBJECT_ID) - хранит названия столбцов таблиц, вторичный ключ object_id связывает столбцы с конкретной таблицей из objects. meta_value (ID,VALUE, META_ID, VALUE_ID) - хранит значения полей (в поле, которое называется value), вторичный ключ meta_id связывает значение поля со столбцом из meta_desk, а ключ value_id одинаков для каждого виртуального кортежа... для каждой "виртуальной" таблицы надо сделать view... например: create or replace view area_ref (REF_ID, REF_NAME) as SELECT mv1.VALUE REF_Id, mv2.VALUE REF_name FROM objects, meta_desk md1, meta_values mv1, meta_desk md2, meta_values mv2 WHERE ( (objects.NAME = 'Area_REF') AND (objects.ID = md1.object_id) AND (objects.ID = md2.object_id) AND (md1.name = 'REF_Id') AND (md2.name = 'REF_name') AND (md1.ID = mv1.meta_id) AND (md2.ID = mv2.meta_id) AND (mv1.value_id = mv2.value_id) ) т.е. для вьюшки с двумя столбцами приходится делать запрос из пяти таблиц... если у вьюшки много полей такой подход приводит к запросу из десятков таблиц с десятками ограничений в условии where... Как сделать менее ресурсоёмким этот запрос для вьюшки? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1544928]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 481ms |

| 0 / 0 |
