Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисляемый столбец / 25 сообщений из 25, страница 1 из 1
12.01.2022, 15:07
    #40126019
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Прошу объяснить.

Что делаю:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
-- Создаём табличку
create table tbl (f1 char(10));

-- Добавляем в неё вычисл. столбец
alter table tbl 
add 
(
"f2" NVARCHAR2(10) VISIBLE GENERATED ALWAYS AS (trim(f1)) VIRTUAL
);

-- Все столбцы отображаются f1 и f2
select * from tbl;

-- Так получаю ошибку
select f2 from tbl;

ORA-00904: "F2": недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"



Как заставить выводить F2??
...
Рейтинг: 0 / 0
12.01.2022, 15:12
    #40126021
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist

-- Все столбцы отображаются f1 и f2
select * from tbl;

Точно f1 и f2?
Может F1 и f2.
...
Рейтинг: 0 / 0
12.01.2022, 15:13
    #40126022
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
А так?
Код: plsql
1.
select "f2" from tbl;
...
Рейтинг: 0 / 0
12.01.2022, 15:25
    #40126029
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Никанор Кузьмич
А так?
Код: plsql
1.
select "f2" from tbl;



ОК, спасибо.

PS кто бы мог подумать
...
Рейтинг: 0 / 0
12.01.2022, 15:32
    #40126032
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist
Никанор Кузьмич
А так?
Код: plsql
1.
select "f2" from tbl;



ОК, спасибо.

PS кто бы мог подумать

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers
...
Рейтинг: 0 / 0
12.01.2022, 15:44
    #40126035
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
SQL*Plus

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers


Дык поэтому смеюсь, слона не заметил.

Кстати, ещё вопрос, можно ли материализовать вычисляемый столбец?
...
Рейтинг: 0 / 0
12.01.2022, 15:55
    #40126037
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist
SQL*Plus

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers


Дык поэтому смеюсь, слона не заметил.

Кстати, ещё вопрос, можно ли материализовать вычисляемый столбец?

А вот про это поподробнее, поскольку возможны разные толкования.
...
Рейтинг: 0 / 0
12.01.2022, 16:07
    #40126038
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Валерий Юринский

А вот про это поподробнее, поскольку возможны разные толкования.


Возможно вычисляемый столбец уже является материализованным, что имеется в виду, при запросе

Код: plsql
1.
select f1, f2 from tbl



поле f2 уже хранится в таблице и не вычисляется во время запроса, те материализованный столбец, физически существующий.

(Аналог MSSQL Persistent)
...
Рейтинг: 0 / 0
12.01.2022, 16:21
    #40126039
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
- А вот у вас в БД столбцы хранятся, место занимают, а можно сделать их вычисляемыми online?
- Конечно, вот вам функционал
- круто, а можно их теперь материализовать?
...
Рейтинг: 0 / 0
12.01.2022, 16:25
    #40126040
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist
Валерий Юринский

А вот про это поподробнее, поскольку возможны разные толкования.


Возможно вычисляемый столбец уже является материализованным, что имеется в виду, при запросе

Код: plsql
1.
select f1, f2 from tbl



поле f2 уже хранится в таблице и не вычисляется во время запроса, те материализованный столбец, физически существующий.

(Аналог MSSQL Persistent)

"Эт вряд ли" (с) Белое солнце пустыни

Основное правило Oracle: Не делать того, чего можно не делать.

Понятия не имею, что такое "MSSQL Persistent".. :-(
...
Рейтинг: 0 / 0
12.01.2022, 16:33
    #40126044
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Валерий Юринский


Основное правило Oracle: Не делать того, чего можно не делать.


ОК, будем "материализовать" через триггер.

2AlexFF__|

Иногда надо "денормализовать" данные в OLTP, но не через клиента, а на уровне данных.
...
Рейтинг: 0 / 0
12.01.2022, 16:44
    #40126049
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist
ОК, будем "материализовать" через триггер.
Зачем? Если для индексирования, то в индексе он будет "материализован"
...
Рейтинг: 0 / 0
12.01.2022, 16:52
    #40126056
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Sayan Malakshinov
PaulWist
ОК, будем "материализовать" через триггер.
Зачем? Если для индексирования, то в индексе он будет "материализован"


Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
...
Рейтинг: 0 / 0
12.01.2022, 16:56
    #40126061
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWistДля выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.

Так просто усекай данные перед занесением в поле, тогда не понадобятся ни
вычисления при выборке, ни дополнительное поле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.01.2022, 17:00
    #40126065
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Dimitry Sibiryakov,

как усечь?

....
stax
...
Рейтинг: 0 / 0
12.01.2022, 17:12
    #40126068
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
PaulWist
Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
trim? да, не может быть...
...
Рейтинг: 0 / 0
12.01.2022, 17:21
    #40126072
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Sayan Malakshinov,

я так понял у PaulWist поле char

.....
stax
...
Рейтинг: 0 / 0
12.01.2022, 19:27
    #40126088
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Sayan Malakshinov
PaulWist
Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
trim? да, не может быть...

кроме trim там еще преобразование типа, которое, ну вот совсем маловероятно, что осмысленно вообще, и для char(10) в частности.
Если убрать преобразование типа, то может и 99% куда-нибудь сдуются.
...
Рейтинг: 0 / 0
12.01.2022, 19:38
    #40126092
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
booby
Sayan Malakshinov
пропущено...
trim? да, не может быть...

кроме trim там еще преобразование типа, которое, ну вот совсем маловероятно, что осмысленно вообще, и для char(10) в частности.
Если убрать преобразование типа, то может и 99% куда-нибудь сдуются.

Не только типа, но и кодировки, поскольку обычно VARCHAR2 и NVARCHAR2 имеют разную кодировку.
Но про 99% - это фантазии, как мне кажется.

Автор!
Приведите скрипт и результаты измерений этих 99%.
...
Рейтинг: 0 / 0
12.01.2022, 19:42
    #40126095
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Код: plsql
1.
2.
-- Создаём табличку
create table tbl (f1 VARchar2(10));



SY
...
Рейтинг: 0 / 0
12.01.2022, 20:03
    #40126104
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
SY
Код: plsql
1.
2.
-- Создаём табличку
create table tbl (f1 VARchar2(10));



SY

-- Создаём табличку
create table tbl (f1 char(10) );

.....
stax
...
Рейтинг: 0 / 0
12.01.2022, 20:40
    #40126117
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Stax,

Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

SY.
...
Рейтинг: 0 / 0
12.01.2022, 20:44
    #40126120
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
SY
Stax,

Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

SY.

чесно говоря не понял
поле в табличке create table tbl (f1 char(10));

почему?, другой вопрос

.....
stax
...
Рейтинг: 0 / 0
12.01.2022, 21:44
    #40126135
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
SY
Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

Предполагаю, что это всего лишь очередная попытка замаскировать реальную проблему неудачным примером.

"У меня У одного моего знакомого есть симпатичная девушка дурацкая база данных,
которая не хочет ходить со мной в кино правильно выполнять простые запросы..."
:-)
...
Рейтинг: 0 / 0
13.01.2022, 08:54
    #40126201
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
SQL*Plus

Не только типа, но и кодировки, поскольку обычно VARCHAR2 и NVARCHAR2 имеют разную кодировку.
Но про 99% - это фантазии, как мне кажется.


1. Пример с вычисляемым полем был приведён, что бы "выяснить" почему была "ошибка" при селекте одного поля.

Почему большинство приняли, что необходимо материализовать пример на проде, для меня загадка.

SQL*Plus

Автор!
Приведите скрипт и результаты измерений этих 99%.


Смысла нет, это вычисление себестоимости.

SQL*Plus

Предполагаю, что это всего лишь очередная попытка замаскировать реальную проблему неудачным примером.

"У меня У одного моего знакомого есть симпатичная девушка дурацкая база данных,
которая не хочет ходить со мной в кино правильно выполнять простые запросы..."



Ответил выше.

Думаю, сейчас уже не надо приводить все скрипты :-)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисляемый столбец / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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