четверг, 12 сентября 2013 г.

Некоторые новые возможности в базе 12C

1.Наконец появился синтаксис для страничной выборки данных.
Синтаксис таков.
o53asktom-f1

 Пример выборки пяти первых записей.

SQL> create table t
  2  as
  3  select * from all_objects;
Table created.

SQL> create index t_idx 
on t(owner,object_name);
Index created.

SQL> select owner, object_name, object_id
  2    from t
  3   order by owner, object_name
  4   FETCH FIRST 5 ROWS ONLY;
…
——————————————————————————————————————————————————————————————————————————————
| Id |Operation                     | Name|Rows  |Bytes |Cost (%CPU)|Time    |
——————————————————————————————————————————————————————————————————————————————
|   0|SELECT STATEMENT              |     |    5 | 1450 |    7   (0)|00:00:01|
|*  1| VIEW                         |     |    5 | 1450 |    7   (0)|00:00:01|
|*  2|  WINDOW NOSORT STOPKEY       |     |    5 |  180 |    7   (0)|00:00:01|
|   3|   TABLE ACCESS BY INDEX ROWID|T    |87310 | 3069K|    7   (0)|00:00:01|
|   4|    INDEX FULL SCAN           |T_IDX|    5 |      |    3   (0)|00:00:01|
——————————————————————————————————————————————————————————————————————————————

Predicate Information (identified by operation id):
—————————————————————————————————————————————————————————————————

1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=5)
2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=5)

Пример выборки пяти записей начиная с пятой.


SQL> select owner, object_name, object_id
  2    from t
  3   order by owner, object_name
  4   OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;


2. Поля SQL VARCHAR2, NVARCHAR2 теперь могут хранить до 32Кб значений.
3. В сотни раз по сравнению с 11G увеличена производительность команды добавления колонки со значением по умолчанию.

SQL> alter table t 
add (data char(2000) default 'DEFAULT VALUE');

4. Добавлено ключевое слово DEFAULT для вставки значения по умолчанию в командах INSERT/UPDATE 

SQL> create table test_table
  2  ( id int
  3      generated by default
  4          as identity
  5          ( start with 33
  6            increment by 10 )
  7          primary key,
  8    val varchar2(100)
  9  )
 10  /
Table created. 
SQL>  insert into test_table (id, … ) 
   values ( DEFAULT, … );
Вставляет значение по умолчанию 33 из последовательности.
SQL>  insert into test_table (id, … ) 
   values ( 10, … );

вставляет значение 10.

2 комментария:

VS комментирует...

Насчет первого примера.
Это выборка пяти записей начиная с первой, все же?

Александр Тышенко комментирует...

Спасибо за замеченную ошибку. Исправлен пример страничной выборки.