powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Database 12c. Новые возможности языка SQL
25 сообщений из 234, страница 9 из 10
Oracle Database 12c. Новые возможности языка SQL
    #38344328
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousу коллеги в голове все еще структурное программирование, не навредить бы...
Эээ. А какое программирование тут надо применять? Можно, конечно, использовать какой-н hibernate, он сам приджоинит и заселектит все, что нужно, и вернет объект. Но вроде обсуждаем средства БД оракл.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344339
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellyandrey_anonymousу коллеги в голове все еще структурное программирование, не навредить бы...
Эээ. А какое программирование тут надо применять?
...
вроде обсуждаем средства БД оракл.
Преимущественно декларативное, язык - SQL, все-таки средства СУБД обсуждаем :)
Попытки применять приемы структурного программирования при работе с запросами выглядят довольно неуклюже - это касается, в том числе, и идеи ваять функцию там, где SQL предполагает скалярный подзапрос либо соединение.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344400
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в прошлом году проскакивали сообщения о том, что в 12с приложат усилия по ускорению выполнения pl/sql кода вообще и строковых операций в частности.
Вопрос к экспериментирующим с 12с - можно ли как-то оценить фактическое состояние по этому вопросу.
Действительно ли на порядок ускорили "строковые операции", и отразилось ли это на работе с регулярными выражениями, например?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344462
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyи строковых операций в частностидаже не представляю, сколько человеко-лет нужно потратить, чтобы замедлить работу substr. Иначе как потом ускорять?!

boobyи отразилось ли это на работе с регулярными выражениями, например?регекспам уже не один десяток лет. Шансы, что оракл, внедряя их в бд позаимствовал не самый производительный код...
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344485
para+
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-регекспам уже не один десяток лет. Шансы, что оракл, внедряя их в бд позаимствовал не самый производительный код...

за 100% точность не ручаюсь и не удалось с хода найти статью где было иследование, но вроде класический bsd regexp lib некоторые операции исполняет _очень_ медленно, а если (и скорее всего) Oracle импортирует сторонний код с учетом лицензии, то есть некоторая вероятность, что может (могла) использоваться не самая быстрая реализация.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344521
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-boobyи строковых операций в частностидаже не представляю, сколько человеко-лет нужно потратить, чтобы замедлить работу substr. Иначе как потом ускорять?!


Разве substr написан на pl/sql, чтобы его принципиально нельзя было ускорить?
(Вообще, никогда ничего не надо делать сначала. Надо всегда все делать потом.)


-2-boobyи отразилось ли это на работе с регулярными выражениями, например?регекспам уже не один десяток лет. Шансы, что оракл, внедряя их в бд позаимствовал не самый производительный код...

В фильтрах запросов у регэкспов, даже при самой идеальной реализации, не так много шансов оказаться быстрыми. Хотя бы из-за высокой верятности парсить шаблон поиска на каждой строке фильтруемого набора.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344671
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellyЯ имел в виду все поля в курсоре вообще, а не только те, которые нужны в данной процедуре. Например, если там еще есть поля email, phone, gender и еще дофига, их все равно надо явно куда-то заселектить.
SYS_REFURSOR можно использовать как источник для создания XMLTYPE, ну а дальше - XMLTABLE в зубы и выдирай то, что хочешь.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347811
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не починили багу с датами в рекурсивных запросах?
запрос1
Код: plsql
1.
2.
3.
4.
with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
                union all 
                select a+1, b+1 from t where b<10)
select b, a from t


запрос2
Код: plsql
1.
2.
3.
4.
with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
                union all 
                select a+1, b+1 from t where b<10)
select b, a from t

...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347822
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
j2k,

это в 11.2.0.3 уже пофиксено было
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347824
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
j2k,

ой, а в 12.1 опять поломано :D
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347837
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
xtenderj2k,

ой, а в 12.1 опять поломано :Dобманул, все ок! ПРосто базы перепутал
11.2.0.1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

SQL> with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;
                select a+1, b+1 from t where b<10)
                        *
ERROR at line 3:
ORA-01790: expression must have same datatype as corresponding expression


SQL> with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 31-DEC-99
         3 30-DEC-99
         4 29-DEC-99
         5 28-DEC-99
         6 27-DEC-99
         7 26-DEC-99
         8 25-DEC-99
         9 24-DEC-99
        10 23-DEC-99

10 rows selected.

11.2.0.2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Release 11.2.0.2.0 - 64bit Production

SQL> with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;
                select a+1, b+1 from t where b<10)
                        *
ERROR at line 3:
ORA-01790: expression must have same datatype as corresponding expression


SQL> with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 31-DEC-99
         3 30-DEC-99
         4 29-DEC-99
         5 28-DEC-99
         6 27-DEC-99
         7 26-DEC-99
         8 25-DEC-99
         9 24-DEC-99
        10 23-DEC-99

10 rows selected.

11.2.0.3
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SQL> with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 02-JAN-00
         3 03-JAN-00
         4 04-JAN-00
         5 05-JAN-00
         6 06-JAN-00
         7 07-JAN-00
         8 08-JAN-00
         9 09-JAN-00
        10 10-JAN-00

10 rows selected.

SQL> with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 02-JAN-00
         3 03-JAN-00
         4 04-JAN-00
         5 05-JAN-00
         6 06-JAN-00
         7 07-JAN-00
         8 08-JAN-00
         9 09-JAN-00
        10 10-JAN-00

10 rows selected.

12.1.0.1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
SQL> select * from v$version where rownum=1;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

SQL> with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 02-JAN-00
         3 03-JAN-00
         4 04-JAN-00
         5 05-JAN-00
         6 06-JAN-00
         7 07-JAN-00
         8 08-JAN-00
         9 09-JAN-00
        10 10-JAN-00

10 rows selected.

SQL> with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
  2                  union all
  3                  select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A
---------- ---------
         1 01-JAN-00
         2 02-JAN-00
         3 03-JAN-00
         4 04-JAN-00
         5 05-JAN-00
         6 06-JAN-00
         7 07-JAN-00
         8 08-JAN-00
         9 09-JAN-00
        10 10-JAN-00

10 rows selected.

...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347842
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderj2k,

ой, а в 12.1 опять поломано :D
а у меня - нормуль
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Присоединен к:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
ions


SQL> with t (a,b) as (select cast(to_date('01.01.2000','dd.MM.yyyy') as date) as a, 1 as b from dual
  2  		     union all
  3  		     select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A                                                                    
---------- --------                                                             
         1 01.01.00                                                             
         2 02.01.00                                                             
         3 03.01.00                                                             
         4 04.01.00                                                             
         5 05.01.00                                                             
         6 06.01.00                                                             
         7 07.01.00                                                             
         8 08.01.00                                                             
         9 09.01.00                                                             
        10 10.01.00                                                             

10 строк выбрано.

SQL> 
SQL> with t (a,b) as (select to_date('01.01.2000','dd.MM.yyyy') as a, 1 as b from dual
  2  		     union all
  3  		     select a+1, b+1 from t where b<10)
  4  select b, a from t;

         B A                                                                    
---------- --------                                                             
         1 01.01.00                                                             
         2 02.01.00                                                             
         3 03.01.00                                                             
         4 04.01.00                                                             
         5 05.01.00                                                             
         6 06.01.00                                                             
         7 07.01.00                                                             
         8 08.01.00                                                             
         9 09.01.00                                                             
        10 10.01.00                                                             

10 строк выбрано.

...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38347844
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
orawish,

да это я запутался в кучке своих тестовых :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Oracle Database 12c. Новые возможности языка SQL
    #38993188
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возрождаю хорошую тему...

* * *

Знаете ли вы, о полезной функции APPROX_COUNT_DISTINCT ,
которая появилась почти год назад в Oracle Database 12.1.0. 2 ?!

Работает намного быстрее обычной функции COUNT(DISTINCT expr)
и результаты дает весьма близкие к точным значениям!

Рекомендую: пробуйте и пользуйтесь!
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38995238
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валерий ЮринскийВозрождаю хорошую тему...

* * *

Знаете ли вы, о полезной функции APPROX_COUNT_DISTINCT ,
которая появилась почти год назад в Oracle Database 12.1.0. 2 ?!

Работает намного быстрее обычной функции COUNT(DISTINCT expr)
и результаты дает весьма близкие к точным значениям!

Рекомендую: пробуйте и пользуйтесь!

подозреваю, что это может быть нужно в основном в вопросах, близких к оценке статистики по таблицам...

в реальных приложениях вряд ли... тем более степенью точности управлять нельзя...
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38995259
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111тем более степенью точности управлять нельзя...Предположу, что для подсчета используется битовая хеш-таблица. Используемый буфер в миллион битов не так уж дорого, соответственно погрешность на миллион уников будет незначительной.
Для небольшого количества уников, и так помещающихся в память сессии, навряд ли будет заметный эффект, а миллионы уников обычно встречаются в статистическом анализе, где погрешность в пару процентов некритична.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38995261
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Oracle Database 12c. Новые возможности языка SQL
    #39488513
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В марте 2017 г. стала доступна новая версия Oracle Database 12c R2 (12.2)

Давайте поделимся и обсудим нововведения!

* * *
Максимальная длина имен большинства объектов увеличена с 30 байт до 128 байт .

Максимальная длина идентификатора теперь может быть 192 байта:
Код: plaintext
1.
2.
"schema_name_128_byte"."table_name_128_byte"."column_name_128_byte"
1      + 128       +1+1+1    + 128       +1+1+1     + 128       + 1 = 192 

Для использования длинных имен должно быть установлено значение параметра
Код: plaintext
COMPATIBLE = 12.2
или выше!

Имена баз данных по-прежнему не более 8 байт

По-прежнему не более 30 байт:
Имена дисковых групп,

Имена подключаемых БД (PDBs),

Имена сегментов отката,

Имена табличных пространств и групп табличных пространств.

* * *

Это полезное нововведение!
Лично мне часто не хватало длины для именования ограничений целостности.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488533
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий ЮринскийЭто полезное нововведение!..., если пишите для себя, а не тиражируемое ПО.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488541
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicВалерий ЮринскийЭто полезное нововведение!..., если пишите для себя, а не тиражируемое ПО.Постепенно у всех будет Oracle Database 12.2+.

Поэтому можно будет использовать длинные имена и в том случае,
если пишете не для себя, а тиражируемое ПО.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488550
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusПостепенно у всех будет Oracle Database 12.2+.Розовая мечта, оторванная от действительности. Это ясно любому, кто читает форум.

P.S. Не надоело переодеваться?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488562
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicSQL*PlusПостепенно у всех будет Oracle Database 12.2+.Розовая мечта, оторванная от действительности.
Это ясно любому, кто читает форум.
Любому, кто читает форум, ясно,
что никто уже не ориентируется на то,
что названия файлов DOS состояли из
не более, чем 8-ми символьного имени,
отделяемого точкой от не более,
чем 3-х символьного расширения.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488564
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самое полезное нововвдение никто не собирается делать
Код: plsql
1.
  v_param1 += v_param2




такое не надо, уже моветон
Код: plsql
1.
  v_param1 += (v_param1 += v_param2++)
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488566
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Юринский,
А даст, например, возможность создать таблицу с именем 128 байт и столбец в ней 62 байта?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #39488577
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j2kА даст, например, возможность создать таблицу с именем 128 байт и столбец в ней 62 байта?\rdbms\admin\dbmsstdx.sql
Код: plsql
1.
2.
3.
4.
5.
6.
7.
create or replace package dbms_standard is

  -- constant defines maximum name length possible
  ORA_MAX_NAME_LEN constant pls_integer := 128;

  -- types
   type ora_name_list_t is table of varchar2(2*(ORA_MAX_NAME_LEN+2)+1);
...
Рейтинг: 0 / 0
25 сообщений из 234, страница 9 из 10
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Database 12c. Новые возможности языка SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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