|
|
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
Добрый день Господа и Дамы! Столкнулся со следующей проблемой. В SQL-Server'е допустима такая конструкция. Обратите внимание на вычислимый атрибут. select tb1.attr1 AS A1, ... (SELECT tb1_Other.Data FROM tb1 tb1_Other WHERE (tb1_Other.field = tb1.field) ) AS CalcField ... tb3.attr1 AS Ak, tb4.attr1 AS An, ... from tb1 tb1, tb3 tb3, tb4 tb4 where (...) Возможно ли как нибудь извратиться в Oracle, чтобы не писать функции для замены (SELECT...) на funct_SELECT... Смотрел по докам, накопал только информацию по CAST и MULTISET. Но они, я так понимаю, работают с объектными типами! ??? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 17:22 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
А если перенести запрос из select во from и соединить в where: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 17:32 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
Да, так годится! Но если таких атрибутов 10...30 то запрос начинает сильно тормозить... Просто для сравнения: в SQL Server -- 2,5 сек в Oracle -- 80 сек Там наверняка можно все оптимизировать, но от изобилия таблиц в секции FROM, ничего хорошего не получается!!! Я уверен тут должен быть еще выход! Просто приходится переводить с SQL Server и постоянно натыкаюсь на такой изврат. Оно-то все по-своему неплохо... Но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 17:41 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
А какая версия Oracle? По крайней мере в 8i (не скажу за 8.0) данная конструкция допустима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 17:49 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно структура такой таблицы. В чём вообще смысл такого запроса? Код: plaintext 1. 2. 3. 4. 5. 6. 7. Насколько я понимаю просто возвращаются все строки таблицы tb1, что собственно делает запрос: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 17:57 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
Oracle 8.0.5 А структуру менять нежелательно, т.к. проект чужой и в нем разгуляться не дают! Может я не совсем дуачный пример привел, насчет tb1... Просто некоторые вычислимые атрибуты выбираются из нескольких таблиц и параметризуются текущими значениями, которые вытягиваются из SELECT'a! :^( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 18:04 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
Наверное лучше всего перейти на 8i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 18:07 |
|
||
|
Вычислимый атрибут: Oracle и SQL-Server
|
|||
|---|---|---|---|
|
#18+
в Оракле (по крайней мере в 8i) такая конструкция тоже допустима, но ... Во-первых не показывается полностью план выполнения. Во-вторых - соединение будет всегда outer join и выполняться путем полного сканирования. Т.е. простой перенос в where не годится. Надо еще добавлять (+). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2003, 20:50 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2811&tid=1991862]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 406ms |

| 0 / 0 |
