рд╣рд╛рдЗрд▓реЛрдб++ рд╕рд╛рдЗрдмреЗрд░рд┐рдпрд╛ реирежрезреп рдХреЛ рдкрд╛рдЗрд▓рд╛ рдкрдЫреНрдпрд╛рдЙрдБрджреИ - рдУрд░реЗрдХрд▓рдорд╛ рео рдХрд╛рд░реНрдпрд╣рд░реВ

рдирдорд╕реНрддреЗ!

рдЬреБрди реирек-реирел рдорд╛ рдиреЛрд╡реЛрд╕рд┐рдмрд┐рд░реНрд╕реНрдХрдорд╛ рд╣рд╛рдЗрд▓реЛрдб++ рд╕рд╛рдЗрдмреЗрд░рд┐рдпрд╛ реирежрезреп рд╕рдореНрдореЗрд▓рди рдЖрдпреЛрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд╣рд╛рдореНрд░рд╛ рд╕рд╛рдереАрд╣рд░реВ рдкрдирд┐ рддреНрдпрд╣рд╛рдБ рдерд┐рдПред рд░рд┐рдкреЛрд░реНрдЯ "рдУрд░реЗрдХрд▓ рдХрдиреНрдЯреЗрдирд░ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ (CDB/PDB) рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рдпреЛрдЧ", рд╣рд╛рдореА рдХреЗрд╣реА рдкрдЫрд┐ рдкрд╛рда рд╕рдВрд╕реНрдХрд░рдг рдкреЛрд╕реНрдЯ рдЧрд░реНрдиреЗрдЫреМрдВред рдпреЛ рд░рд╛рдореНрд░реЛ рдерд┐рдпреЛ, рдзрдиреНрдпрд╡рд╛рдж olegbunin рд╕рдВрдЧрдардирдХреЛ рд▓рд╛рдЧрд┐, рд╕рд╛рдереИ рдЖрдЙрдиреЗ рд╕рдмреИрд▓рд╛рдИред

рд╣рд╛рдЗрд▓реЛрдб++ рд╕рд╛рдЗрдмреЗрд░рд┐рдпрд╛ реирежрезреп рдХреЛ рдкрд╛рдЗрд▓рд╛ рдкрдЫреНрдпрд╛рдЙрдБрджреИ - рдУрд░реЗрдХрд▓рдорд╛ рео рдХрд╛рд░реНрдпрд╣рд░реВ
рдпрд╕ рдкреЛрд╖реНрдЯрдорд╛, рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ рдмреБрдердорд╛ рднрдПрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рдЖрдлреНрдиреЛ Oracle рдЬреНрдЮрд╛рди рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдХрдЯ рддрд▓ 8 рд╕рдорд╕реНрдпрд╛, рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЫрдиреНред

рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓реЗ рджреЗрдЦреНрдиреЗ рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдХреНрд░рдо рдорд╛рди рдХреЗ рд╣реЛ?

create sequence s start with 1;
 
select s.currval, s.nextval, s.currval, s.nextval, s.currval
from dual
connect by level <= 5;

  • 1
  • 5
  • 10
  • 25
  • рд╣реЛрдЗрди, рддреНрд░реБрдЯрд┐ рд╣реБрдиреЗрдЫ

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):
рдПрдХрд▓ SQL рдХрдерди рднрд┐рддреНрд░, Oracle рд▓реЗ рдкреНрд░рддрд┐ рдкрдЩреНрдХреНрддрд┐рдорд╛ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдЕрдиреБрдХреНрд░рдо рд╡реГрджреНрдзрд┐ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдХрдердирд▓реЗ рдЕрдиреБрдХреНрд░рдордХреЛ рд▓рд╛рдЧрд┐ NEXTVAL рдорд╛ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рд╕рдиреНрджрд░реНрдн рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рднрдиреЗ, Oracle рд▓реЗ рдЕрдиреБрдХреНрд░рдо рдПрдХ рдкрдЯрдХ рдмрдврд╛рдЙрдБрдЫ рд░ NEXTVAL рдХреЛ рд╕рдмреИ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдорд╛рди рдлрд░реНрдХрд╛рдЙрдБрдЫред рдпрджрд┐ рдХрдердирд▓реЗ CURRVAL рд░ NEXTVAL рджреБрдмреИ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рднрдиреЗ, Oracle рд▓реЗ рдЕрдиреБрдХреНрд░рдо рдмрдврд╛рдЙрдБрдЫ рд░ CURRVAL рд░ NEXTVAL рджреБрд╡реИрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдорд╛рди рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫ рдХрдерди рднрд┐рддреНрд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрд░реНрдбрд░ рдмрд┐рдирд╛ред

рддреНрдпрд╕реИрд▓реЗ, рдЕрдзрд┐рдХрддрдо рдорд╛рди рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ, рддреНрдпреЛ 5 рд╣реЛ.

рдирд┐рдореНрди рд▓рд┐рдкрд┐ рдЪрд▓рд╛рдЙрдБрджрд╛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдХрддрд┐ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН?

create table t(i integer check (i < 5));
 
create procedure p(p_from integer, p_to integer) as
begin
    for i in p_from .. p_to loop
        insert into t values (i);
    end loop;
end;
/
 
exec p(1, 3);
exec p(4, 6);
exec p(7, 9);

  • 0
  • 3
  • 4
  • 5
  • 6
  • 9

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):

рдХреБрдиреИ рдкрдирд┐ SQL рдХрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБ рдЕрдШрд┐, Oracle рд▓реЗ рдПрдЙрдЯрд╛ рдирд┐рд╣рд┐рдд рдмрдЪрдд рдмрд┐рдиреНрджреБ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрджрдЫ (рддрдкрд╛рдИрд▓рд╛рдИ рдЙрдкрд▓рдмреНрдз рдЫреИрди)ред рддреНрдпрд╕рдкрдЫрд┐, рдпрджрд┐ рдХрдерди рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, Oracle рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫ рд░ SQLCA рдорд╛ SQLCODE рдорд╛ рд▓рд╛рдЧреВ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдлрд░реНрдХрд╛рдЙрдБрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ INSERT рдХрдердирд▓реЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдШреБрд╕рд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрд░ рддреНрд░реБрдЯрд┐ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫ рднрдиреЗ, рдХрдерди рдлрд┐рд░реНрддрд╛ рд╣реБрдиреНрдЫред

рдХреНрд▓рд╛рдЗрдиреНрдЯрдмрд╛рдЯ рдХрд▓ рдЧрд░реНрдиреЗ HP рд▓рд╛рдИ рдПрдХрд▓ рд╕реНрдЯреЗрдЯрдореЗрдиреНрдЯрдХреЛ рд░реВрдкрдорд╛ рдкрдирд┐ рдорд╛рдирд┐рдиреНрдЫ рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫред рдпрд╕рд░реА, рдкрд╣рд┐рд▓реЛ HP рдХрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдиреНрдЫ, рддреАрди рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реЗрд░; рджреЛрд╕реНрд░реЛ HP рдХрд▓ рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ рд░ рдЪреМрдереЛ рд░реЗрдХрд░реНрдб рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫ рдЬреБрди рдпрд╕рд▓реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдпреЛ; рддреЗрд╕реНрд░реЛ рдХрд▓ рдЕрд╕рдлрд▓, рд░ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рддреАрди рд░реЗрдХрд░реНрдбрд╣рд░реВ рдЫрдиреН.

рдирд┐рдореНрди рд▓рд┐рдкрд┐ рдЪрд▓рд╛рдЙрдБрджрд╛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдХрддрд┐ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН?

create table t(i integer, constraint i_ch check (i < 3));
 
begin
    insert into t values (1);
    insert into t values (null);
    insert into t values (2);
    insert into t values (null);
    insert into t values (3);
    insert into t values (null);
    insert into t values (4);
    insert into t values (null);
    insert into t values (5);
exception
    when others then
        dbms_output.put_line('Oops!');
end;
/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):

рдЪреЗрдХ рдмрд╛рдзрд╛рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдЩреНрдХреНрддрд┐рд▓реЗ рдкреВрд░рд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рдЕрд╡рд╕реНрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рджрд┐рдиреНрдЫред рдмрд╛рдзрд╛рд▓рд╛рдИ рд╕рдиреНрддреБрд╖реНрдЯ рдкрд╛рд░реНрди, рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдЩреНрдХреНрддрд┐рд▓реЗ рд╢рд░реНрддрд▓рд╛рдИ TRUE рд╡рд╛ рдЕрдЬреНрдЮрд╛рдд (рдирд▓рд┐рдХрд╛ рдХрд╛рд░рдг) рдмрдирд╛рдЙрдиреБрдкрд░реНрдЫред рдЬрдм Oracle рд▓реЗ рдХреБрдиреИ рд╡рд┐рд╢реЗрд╖ рдкрдЩреНрдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдБрдЪ рдмрд╛рдзрд╛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫ, рд╕рд░реНрддрдорд╛ рд░рд╣реЗрдХрд╛ рдХреБрдиреИ рдкрдирд┐ рд╕реНрддрдореНрдн рдирд╛рдорд╣рд░реВрд▓реЗ рддреНрдпреЛ рдкрдЩреНрдХреНрддрд┐рдХреЛ рд╕реНрддрдореНрдн рдорд╛рдирд╣рд░реВрд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫред

рдпрд╕рд░реА, рдорд╛рди рдирд▓рд▓реЗ рдЪреЗрдХ рдкрд╛рд╕ рдЧрд░реНрдиреЗрдЫ, рд░ рдорд╛рди 3 рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдирдЧрд░реЗрд╕рдореНрдо рдмреЗрдирд╛рдореА рдмреНрд▓рдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗрдЫред рдпрд╕ рдкрдЫрд┐, рддреНрд░реБрдЯрд┐ рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рдмреНрд▓рдХрд▓реЗ рдЕрдкрд╡рд╛рдж рд╣рдЯрд╛рдЙрдБрдЫ, рдХреБрдиреИ рд░реЛрд▓рдмреНрдпрд╛рдХ рд╣реБрдиреЗрдЫреИрди, рд░ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдЪрд╛рд░ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдмрд╛рдБрдХреА рд╣реБрдиреЗрдЫрдиреН 1, null, 2 рд░ рдлреЗрд░рд┐ null рдорд╛рдирд╣рд░реВрд╕рдБрдЧред

рдХреБрди рдЬреЛрдбреА рдорд╛рдирд╣рд░реВрд▓реЗ рдмреНрд▓рдХрдорд╛ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛рдорд╛ рдард╛рдЙрдБ рд▓рд┐рдиреЗрдЫ?

create table t (
    a char(1 char),
    b char(10 char),
    c char(100 char),
    i number(4),
    j number(14),
    k number(24),
    x varchar2(1 char),
    y varchar2(10 char),
    z varchar2(100 char));
 
insert into t (a, b, i, j, x, y)
    values ('Y', '╨Т╨░╤Б╤П', 10, 10, '╨Ф', '╨Т╨░╤Б╤П');

  • рдП рд░ рдПрдХреНрд╕
  • рдмреА рд░ рд╡рд╛рдИ
  • рд╕реА рд░ рдХреЗ
  • C рд░ Z
  • K рд░ Z
  • рдо рд░ рдЬреЗ
  • рдЬреЗ рд░ рдПрдХреНрд╕
  • рд╕рдмреИ рд╕реВрдЪреАрдмрджреНрдз

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдпрд╣рд╛рдБ Oracle рдорд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рдХрд╛рдЧрдЬрд╛рдд (12.1.0.2) рдХреЛ рдЕрдВрд╢рд╣рд░реВ рдЫрдиреНред

CHAR рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░
CHAR рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реЗрдЯрдорд╛ рдирд┐рд╢реНрдЪрд┐рдд-рд▓рдореНрдмрд╛рдЗ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реНрдЯреНрд░рд┐рдЩ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред Oracle рд▓реЗ CHAR рд╕реНрддрдореНрднрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдорд╛рдирд╣рд░реВрд▓рд╛рдИ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рд▓рдореНрдмрд╛рдЗ рд╕рд┐рдорд╛рдиреНрдЯрд┐рдХреНрд╕рдорд╛ рдЖрдХрд╛рд░рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рд▓рдореНрдмрд╛рдЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрддрдореНрднрдХреЛ рд▓рдореНрдмрд╛рдЗ рднрдиреНрджрд╛ рдЫреЛрдЯреЛ рдорд╛рди рдШреБрд╕рд╛рдЙрдиреБрднрдпреЛ рднрдиреЗ, Oracle рдЦрд╛рд▓реА-рдкреНрдпрд╛рдбрд▓реЗ рдорд╛рдирд▓рд╛рдИ рд╕реНрддрдореНрднрдХреЛ рд▓рдореНрдмрд╛рдЗрдорд╛ рд░рд╛рдЦреНрдЫред

VARCHAR2 рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░
VARCHAR2 рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реЗрдЯрдорд╛ рдЪрд▓-рд▓рдореНрдмрд╛рдЗ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реНрдЯреНрд░рд┐рдЩ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред Oracle рд▓реЗ VARCHAR2 рд╕реНрддрдореНрднрдорд╛ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рдорд╛рди рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫ рдЬреБрди рддрдкрд╛рдИрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ, рдХреБрдиреИ рдЦрд╛рд▓реА-рдкреНрдпрд╛рдбрд┐рдЩ рдмрд┐рдирд╛, рдорд╛рди рд╕реНрддрдореНрднрдХреЛ рд▓рдореНрдмрд╛рдЗ рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдБрджреИрдиред

NUMBER рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
NUMBER рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд▓реЗ 1.0 x 10-130 рджреЗрдЦрд┐ 1.0 x 10126 рд╕рдореНрдордХреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рдирд╣рд░реВрдХреЛ рд╕рд╛рдердорд╛ рд╢реВрдиреНрдп рд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдЫ рддрд░ 1.0 x 10126 рд╕рдореНрдо рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрдиред рдпрджрд┐ рддрдкрд╛рдИрдБрд▓реЗ рдПрдЙрдЯрд╛ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рдХреЛ рдорд╛рди рдмрд░рд╛рдмрд░ рд╡рд╛ рдмрд░рд╛рдмрд░ рд╣реБрдиреНрдЫ 1 x 22, рддреНрдпрд╕рдкрдЫрд┐ Oracle рд▓реЗ рддреНрд░реБрдЯрд┐ рдлрд░реНрдХрд╛рдЙрдБрдЫред рдкреНрд░рддреНрдпреЗрдХ NUMBER рдорд╛рди XNUMX рджреЗрдЦрд┐ XNUMX рдмрд╛рдЗрдЯ рд╕рдореНрдо рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрд╕рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рд╡рд┐рд╢реЗрд╖ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдорд╛рди NUMBER(p) рдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рдЗрдЯрд╣рд░реВрдорд╛ рд╕реНрддрдореНрдн рдЖрдХрд╛рд░, рдЬрд╣рд╛рдБ p рджрд┐рдЗрдПрдХреЛ рдорд╛рдирдХреЛ рд╢реБрджреНрдзрддрд╛ рд╣реЛ, рдирд┐рдореНрди рд╕реВрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЧрдгрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ: ROUND((рд▓рдореНрдмрд╛рдЗ(p)+s)/2))+1 рдЬрд╣рд╛рдБ рд╕рдВрдЦреНрдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЫ рднрдиреЗ s рд╢реВрдиреНрдп рд╣реБрдиреНрдЫ, рд░ рд╕рдВрдЦреНрдпрд╛ рдЛрдгрд╛рддреНрдордХ рдЫ рднрдиреЗ s рдмрд░рд╛рдмрд░ 1 рд╣реБрдиреНрдЫред

рдердк рд░реВрдкрдорд╛, рд╢реВрдиреНрдп рдорд╛рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рдПрдЙрдЯрд╛ рдЕрдВрд╢ рд▓рд┐рдФрдВред

рдирд▓ рднрдиреЗрдХреЛ рд╕реНрддрдореНрднрдорд╛ рдорд╛рдирдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реЛред рдирд▓рд╣рд░реВрд▓реЗ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ, рдЕрдЬреНрдЮрд╛рдд, рд╡рд╛ рд▓рд╛рдЧреВ рдирд╣реБрдиреЗ рдбрд╛рдЯрд╛рд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫред рдирд▓рд╣рд░реВ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдбрд╛рдЯрд╛ рдорд╛рдирд╣рд░реВ рднрдПрдХрд╛ рд╕реНрддрдореНрднрд╣рд░реВ рдмреАрдЪрдорд╛ рдкрд░реНрдЫрдиреНред рдпреА рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реНрддрдореНрднрдХреЛ рд▓рдореНрдмрд╛рдЗ (рд╢реВрдиреНрдп) рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди 1 рдмрд╛рдЗрдЯ рдЪрд╛рд╣рд┐рдиреНрдЫред рдкрдЩреНрдХреНрддрд┐рдорд╛ рд░рд╣реЗрдХрд╛ рдирд▓рд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рднрдгреНрдбрд╛рд░рдг рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди рдХрд┐рдирднрдиреЗ рдирдпрд╛рдБ рдкрдЩреНрдХреНрддрд┐ рд╣реЗрдбрд░рд▓реЗ рдЕрдШрд┐рд▓реНрд▓реЛ рдкрдЩреНрдХреНрддрд┐рдХрд╛ рдмрд╛рдБрдХреА рд╕реНрддрдореНрднрд╣рд░реВ рд╢реВрдиреНрдп рдЫрдиреН рднрдиреА рд╕рдЩреНрдХреЗрдд рдЧрд░реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдЕрдиреНрддрд┐рдо рддреАрди рд╕реНрддрдореНрднрд╣рд░реВ рд╢реВрдиреНрдп рдЫрдиреН рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпреА рд╕реНрддрдореНрднрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд╣реБрдБрджреИрдиред

рдпреА рдбрд╛рдЯрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд╣рд╛рдореА рддрд░реНрдХ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдЫреМрдВред рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ AL32UTF8 рдЗрдиреНрдХреЛрдбрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫ рднрдиреЗрд░ рд╣рд╛рдореА рдорд╛рдиреНрджрдЫреМрдВред рдпрд╕ рдПрдиреНрдХреЛрдбрд┐рдЩрдорд╛, рд░реВрд╕реА рдЕрдХреНрд╖рд░рд╣рд░реВрд▓реЗ 2 рдмрд╛рдЗрдЯрд╣рд░реВ рдУрдЧрдЯреЗрдХреЛ рдЫред

1) A рд░ X, рдлрд┐рд▓реНрдбрдХреЛ рдорд╛рди 'Y' рд▓реЗ 1 рдмрд╛рдЗрдЯ рд▓рд┐рдиреНрдЫ, рдлрд┐рд▓реНрдб x 'D' рдХреЛ рдорд╛рди 2 рдмрд╛рдЗрдЯ рд▓рд┐рдиреНрдЫ
2) B рд░ Y, b рдорд╛ 'Vasya' рд▓рд╛рдИ 10 рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕рдореНрдо рд╕реНрдкреЗрд╕рд╕рд╣рд┐рдд рдкреНрдпрд╛рдб рдЧрд░рд┐рдиреЗрдЫ рд░ 14 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдиреЗрдЫ, d рдорд╛ 'Vasya' рд▓реЗ 8 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдиреЗрдЫред
3) C рд░ Kред рджреБрдмреИ рдлрд┐рд▓реНрдбрд╣рд░реВрдорд╛ NULL рдорд╛рди рдЫ, рддрд┐рдиреАрд╣рд░реВ рдкрдЫрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдлрд┐рд▓реНрдбрд╣рд░реВ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ 1 рдмрд╛рдЗрдЯ рдУрдЧрдЯреЗрдХрд╛ рдЫрдиреНред
4) C рд░ Zред рджреБрдмреИ рдлрд┐рд▓реНрдбрд╣рд░реВрдорд╛ NULL рдорд╛рди рдЫ, рддрд░ рдлрд┐рд▓реНрдб Z рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдЕрдиреНрддрд┐рдо рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓реЗ рдард╛рдЙрдБ рд▓рд┐рдБрджреИрди (0 рдмрд╛рдЗрдЯрд╣рд░реВ)ред рдлрд┐рд▓реНрдб C рд▓реЗ рез рдмрд╛рдЗрдЯ рдУрдЧрдЯреЗрдХреЛ рдЫред
5) K рд░ Zред рдЕрдШрд┐рд▓реНрд▓реЛ рдХреЗрд╕ рдЬрд╕реНрддреИред K рдлрд┐рд▓реНрдбрдХреЛ рдорд╛рдирд▓реЗ 1 рдмрд╛рдЗрдЯ рдУрдЧрдЯреЗрдХреЛ рдЫ, Z - 0 рдорд╛ред
6) I рд░ J. рдХрд╛рдЧрдЬрд╛рдд рдЕрдиреБрд╕рд╛рд░, рджреБрдмреИ рдорд╛рдирд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдиреЗрдЫред рд╣рд╛рдореА рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рд╕реВрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рдореНрдмрд╛рдЗ рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВ: рд░рд╛рдЙрдиреНрдб((1 + 0)/2) +1 = 1 + 1 = 2ред
7) J рд░ Xред J рдлрд┐рд▓реНрдбрдХреЛ рдорд╛рдирд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдиреНрдЫ, X рдлрд┐рд▓реНрдбрдХреЛ рдорд╛рдирд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдиреНрдЫред

рдХреБрд▓рдорд╛, рд╕рд╣реА рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реБрдиреН: C рд░ K, I рд░ J, J рд░ Xред

T_I рд╕реВрдЪрдХрд╛рдВрдХрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХ рд▓рдЧрднрдЧ рдХреЗ рд╣реБрдиреЗрдЫ?

create table t (i integer);
 
insert into t select rownum from dual connect by level <= 10000;
 
create index t_i on t(i);

  • рд▓рдЧрднрдЧ рджрд╕реМрдВ
  • рдХрд░рд┐рдм рд╕рдпреМрдВ
  • рд▓рдЧрднрдЧ рд╣рдЬрд╛рд░реМрдВ
  • рдХрд░рд┐рдм рджрд╢реМрдВ рд╣рдЬрд╛рд░

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):

рдмреА-рдЯреНрд░реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХрд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдорд╛рдирдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рднреМрддрд┐рдХ рд╕рдореВрд╣рд▓рд╛рдИ рдорд╛рдкрди рдЧрд░реНрджрдЫред

рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХрд▓реЗ рдЕрдиреБрдХреВрд▓рдХрд▓рд╛рдИ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рд╡рд╛ рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рдмрдвреА рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рдЫ рдХрд┐ рднрдиреЗрд░ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдХрдо рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХрд▓реЗ рдХреБрд╢рд▓ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдХреНрдпрд╛рдирд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред

рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдирдЬрд┐рдХ рд░рд╣реЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХрд▓реЗ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрджреНрд╡рд╛рд░рд╛ рддрд╛рд▓рд┐рдХрд╛ рдмреНрд▓рдХрд╣рд░реВрдорд╛ рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдХреНрд░рдордмрджреНрдз рдЧрд░рд┐рдПрдХреЛ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫред рдпрджрд┐ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрдЫ рднрдиреЗ, рддрдм рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЦреЛрдЬреНрдЫ рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдбрд┐рд╕реНрдХрдорд╛ рднрдгреНрдбрд╛рд░рдг рд╣реБрдиреНрдЫрдиреНред рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдирдЬрд┐рдХ рд░рд╣реЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХрд▓реЗ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдмреНрд▓рдХрд╣рд░реВрдорд╛ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдЫрд░рд┐рдПрдХрд╛ рдЫрдиреН рднрдиреА рд╕рдВрдХреЗрдд рдЧрд░реНрдЫред рдпрджрд┐ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрдЫ рднрдиреЗ, рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдпреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрджреНрд╡рд╛рд░рд╛ рдХреБрдиреИ рдкрдирд┐ рдХреНрд░рдордмрджреНрдз рдХреНрд░рдордорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИрдиред

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдбрд╛рдЯрд╛ рдЖрджрд░реНрд╢ рд░реВрдкрдорд╛ рдХреНрд░рдордмрджреНрдз рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдХрдмреНрдЬрд╛ рдЧрд░рд┐рдПрдХрд╛ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрд░рд╛рдмрд░ рд╡рд╛ рдирдЬрд┐рдХ рд╣реБрдиреЗрдЫред 8 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯрдХреЛ рдорд╛рдирдХ рдмреНрд▓рдХ рд╕рд╛рдЗрдЬрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рд▓рдЧрднрдЧ рдПрдХ рд╣рдЬрд╛рд░ рд╕рдВрдХреАрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдорд╛рдирд╣рд░реВ рдПрдХ рдмреНрд▓рдХрдорд╛ рдлрд┐рдЯ рд╣реБрдиреЗрдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рдмреНрд▓рдХрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк, рдХреНрд▓рд╕реНрдЯрд░рд┐рдЩ рдХрд╛рд░рдХ рд╣реБрдиреЗрдЫред рджрд╕реМрдВ рдмрд╛рд░реЗ.

N рдХреЛ рдХреБрди рдорд╛рдирд╣рд░реВрдорд╛ рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдирдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗрдЫ?

create table t (
    a varchar2(N char),
    b varchar2(N char),
    c varchar2(N char),
    d varchar2(N char));
 
create index t_i on t (a, b, c, d);

  • 100
  • 200
  • 400
  • 800
  • 1600
  • 3200
  • 6400

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):

рддрд╛рд░реНрдХрд┐рдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реАрдорд╛рд╣рд░реВ

рд╡рд╕реНрддреБ
рд╕реАрдорд╛ рдХреЛ рдкреНрд░рдХрд╛рд░
рд╕реАрдорд╛ рдореВрд▓реНрдп

рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ
рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реНрддрдореНрднрдХреЛ рдХреБрд▓ рдЖрдХрд╛рд░
рдбрд╛рдЯрд╛рдмреЗрд╕ рдмреНрд▓рдХ рд╕рд╛рдЗрдЬрдХреЛ ренрел% рдорд╛рдЗрдирд╕ рдХреЗрд╣реА рдУрднрд░рд╣реЗрдб

рдпрд╕рд░реА, рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реНрддрдореНрднрд╣рд░реВрдХреЛ рдХреБрд▓ рдЖрдХрд╛рд░ 6Kb рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдиреБ рд╣реБрдБрджреИрдиред рддреНрдпрд╕рдкрдЫрд┐ рдХреЗ рд╣реБрдиреНрдЫ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЖрдзрд╛рд░ рдЗрдиреНрдХреЛрдбрд┐рдЩрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред AL32UTF8 рдЗрдиреНрдХреЛрдбрд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдЙрдЯрд╛ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд▓реЗ рдЕрдзрд┐рдХрддрдо рек рдмрд╛рдЗрдЯрд╣рд░реВ рдУрдЧрдЯреНрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛рдорд╛, рд▓рдЧрднрдЧ резрелрежреж рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВ рем рдХрд┐рд▓реЛрдмрд╛рдЗрдЯрдорд╛ рдлрд┐рдЯ рд╣реБрдиреЗрдЫрдиреНред рддреНрдпрд╕рдХрд╛рд░рдг, рдУрд░реЗрдХрд▓рд▓реЗ N = 4 рдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗрдЫ (рдЬрдм рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдХреЗрд╕ рдХреБрдЮреНрдЬреА рд▓рдореНрдмрд╛рдЗ 6 рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ * 1500 рдмрд╛рдЗрдЯ + рд░реЛрд╡рд┐рдб рд▓рдореНрдмрд╛рдЗ рд╣реЛ), рдЬрдмрдХрд┐ N = 200 (рд╡рд╛ рдХрдо) рдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рд╕рдорд╕реНрдпрд╛ рдмрд┐рдирд╛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред

APPEND рд╕рдВрдХреЗрддрдХреЛ рд╕рд╛рде INSERT рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдореЛрдбрдорд╛ рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрджрд┐ рдЯреНрд░рд┐рдЧрд░ рдЭреБрдгреНрдбрд┐рдПрдХреЛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

  • рдбрд╛рдЯрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдореЛрдбрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫ, рдЯреНрд░рд┐рдЧрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ
  • рдбрд╛рдЯрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдореЛрдбрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫ, рддрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗрдЫреИрди
  • рдбреЗрдЯрд╛ рдкрд░рдореНрдкрд░рд╛рдЧрдд рдореЛрдбрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫ, рдЯреНрд░рд┐рдЧрд░рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ рдЬрд╕реНрддреИ рдпреЛ рдЧрд░реНрдиреБрдкрд░реНрдЫ
  • рдбреЗрдЯрд╛ рдкрд░рдореНрдкрд░рд╛рдЧрдд рдореЛрдбрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫ, рддрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗрдЫреИрди
  • рдбрд╛рдЯрд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫреИрди, рддреНрд░реБрдЯрд┐ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдиреЗрдЫ

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрдореВрд▓рддрдГ, рдпреЛ рддрд░реНрдХ рдХреЛ рдПрдХ рдкреНрд░рд╢реНрди рдХреЛ рдЕрдзрд┐рдХ рдЫред рд╕рд╣реА рдЬрд╡рд╛рдл рдЦреЛрдЬреНрди, рдо рдирд┐рдореНрди рддрд░реНрдХ рдореЛрдбреЗрд▓ рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ:

  1. рд╕реАрдзрд╛ рдореЛрдбрдорд╛ рд╕рдореНрдорд┐рд▓рди рдбрд╛рдЯрд╛ рдмреНрд▓рдХрдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЧрдардирджреНрд╡рд╛рд░рд╛ рдЧрд░рд┐рдиреНрдЫ, SQL рдЗрдиреНрдЬрд┐рдирд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реЗрд░, рдЬрд╕рд▓реЗ рдЙрдЪреНрдЪ рдЧрддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫред рдпрд╕рд░реА, рдЯреНрд░рд┐рдЧрд░рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫ, рдпрджрд┐ рдЕрд╕рдореНрднрд╡ рдЫреИрди, рд░ рдпрд╕рдорд╛ рдХреБрдиреИ рдорддрд▓рдм рдЫреИрди, рдХрд┐рдирдХрд┐ рдпрд╕рд▓реЗ рдЕрдЭреИ рд╕рдореНрдо рд╕рдореНрдорд┐рд▓рдирд▓рд╛рдИ рдореМрд▓рд┐рдХ рд░реВрдкрдорд╛ рдврд┐рд▓реЛ рдЧрд░реНрдиреЗрдЫред
  2. рдЯреНрд░рд┐рдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрд╕рдлрд▓рддрд╛рд▓реЗ рддрдереНрдпрд▓рд╛рдИ рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗрдЫ рдХрд┐, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдбрд╛рдЯрд╛ рд╕рдорд╛рди рдЫ рднрдиреЗ, рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕реНрдерд┐рддрд┐ рд╕рдореНрдкреВрд░реНрдг рд░реВрдкрдорд╛ (рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ) рдпреЛ рдбрд╛рдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдореЛрдбрдорд╛ рдирд┐рд░реНрднрд░ рд╣реБрдиреЗрдЫред рдпрд╕рд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдбреЗрдЯрд╛ рдЕрдЦрдгреНрдбрддрд╛рд▓рд╛рдИ рдирд╖реНрдЯ рдЧрд░реНрдиреЗрдЫ рд░ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╕рдорд╛рдзрд╛рдирдХреЛ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред
  3. рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдЕрдкрд░реЗрд╢рди рдЧрд░реНрди рдЕрд╕рдХреНрд╖рдорддрд╛рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддреНрд░реБрдЯрд┐рдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░рд┐рдиреНрдЫред рддрд░ рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╕рдореНрдЭрдиреБрдкрд░реНрдЫ рдХрд┐ APPEND рдПрдЙрдЯрд╛ рд╕рдЩреНрдХреЗрдд рд╣реЛ, рд░ рд╕рдВрдХреЗрддрд╣рд░реВрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рд╕рдореНрднрд╡ рднрдПрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЦрд╛рддрд╛рдорд╛ рд▓рд┐рдЗрдиреНрдЫ, рддрд░ рдпрджрд┐ рд╣реЛрдЗрди рднрдиреЗ, рдЕрдкрд░реЗрдЯрд░рд▓реЗ рд╕рдВрдХреЗрддрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рдирд▓рд┐рдЗрдХрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред

рддреНрдпрд╕реИрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЬрд╡рд╛рдл рдЫ рдбрд╛рдЯрд╛ рд╕рд╛рдорд╛рдиреНрдп (SQL) рдореЛрдбрдорд╛ рд▓реЛрдб рд╣реБрдиреЗрдЫ, рдЯреНрд░рд┐рдЧрд░ рдлрд╛рдпрд░ рд╣реБрдиреЗрдЫред

рдУрд░реЗрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрд╕рд╛рд░ (рео.рез.рем рдмрд╛рдЯ рдЙрджреНрдзреГрдд):

рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВрдХреЛ рдЙрд▓реНрд▓рдЩреНрдШрдирд▓реЗ рдХрдердирд▓рд╛рдИ рдЪреЗрддрд╛рд╡рдиреА рд╡рд╛ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдмрд┐рдирд╛, рдкрд░рдореНрдкрд░рд╛рдЧрдд рд╕рдореНрдорд┐рд▓рд┐рдд рдорд╛рд░реНрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред рдПрдЙрдЯрд╛ рдЕрдкрд╡рд╛рдж рднрдиреЗрдХреЛ рд▓реЗрдирджреЗрдирдорд╛ рдПрдЙрдЯреИ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдПрдХрднрдиреНрджрд╛ рдмрдвреА рдкрдЯрдХ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рдмрдпрд╛рдирд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдз рд╣реЛ, рдЬрд╕рд▓реЗ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рдЯреНрд░рд┐рдЧрд░ рд╡рд╛ рд╕рдиреНрджрд░реНрдн рдЕрдЦрдгреНрдбрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпрдХреНрд╖-рд▓реЛрдб INSERT (рд╕рд┐рд░рд┐рдпрд▓ рд╡рд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрд╛ APPEND рд╕рдЩреНрдХреЗрддрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░рд┐рдиреЗрдЫ, рд╕рд╛рдереИ PARALLEL рд╕рдЩреНрдХреЗрдд рд╡рд╛ рдЦрдгреНрдб, рдпрджрд┐ рдХреБрдиреИ рдЫ рднрдиреЗред

рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рдХреЗ рд╣реБрдиреЗрдЫ?

create table t(i integer not null primary key, j integer references t);
 
create trigger t_a_i after insert on t for each row
declare
    pragma autonomous_transaction;
begin
    insert into t values (:new.i + 1, :new.i);
    commit;
end;
/
 
insert into t values (1, null);

  • рд╕рдлрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  • рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддреНрд░реБрдЯрд┐рдХреЛ рдХрд╛рд░рдг рдЕрд╕рдлрд▓
  • рддреНрд░реБрдЯрд┐: рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрди рдорд╛рдиреНрдп рдЫреИрди
  • рдХрд▓ рдиреЗрд╕реНрдЯрд┐рдЩрдХреЛ рдЕрдзрд┐рдХрддрдо рд╕реАрдорд╛ рдирд╛рдШреНрди рд╕рдореНрдмрдиреНрдзрд┐рдд рддреНрд░реБрдЯрд┐
  • рд╡рд┐рджреЗрд╢реА рдХреБрдЮреНрдЬреА рдЙрд▓реНрд▓рдЩреНрдШрди рддреНрд░реБрдЯрд┐
  • рддрд╛рд▓рд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рддреНрд░реБрдЯрд┐

рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реЛрд╕реНрддрд╛рд▓рд┐рдХрд╛ рд░ рдЯреНрд░рд┐рдЧрд░ рдПрдХрджрдо рд╕рд╣реА рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдпреЛ рдЕрдкрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдиреЗрддреГрддреНрд╡ рдЧрд░реНрдиреБ рд╣реБрдБрджреИрдиред рдЯреНрд░рд┐рдЧрд░рдорд╛ рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрдирд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЫ, рдЕрдиреНрдпрдерд╛ рд▓рдЧрд┐рдЩ рд╕рдореНрднрд╡ рд╣реБрдиреЗ рдЫреИрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред

рдкрд╣рд┐рд▓реЛ рдкрдЩреНрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реЗрдкрдЫрд┐, рд╕рдлрд▓ рдЯреНрд░рд┐рдЧрд░ рдлрд╛рдпрд░рд┐рдЩрд▓реЗ рджреЛрд╕реНрд░реЛ рдкрдЩреНрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди, рдЯреНрд░рд┐рдЧрд░рд▓рд╛рдИ рдлреЗрд░рд┐ рдлрд╛рдпрд░ рдЧрд░реНрдиреЗ, рддреЗрд╕реНрд░реЛ рдкрдЩреНрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреЗ, рд░ рдХрд▓рд╣рд░реВрдХреЛ рдЕрдзрд┐рдХрддрдо рдиреЗрд╕реНрдЯрд┐рдЩрдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╕реНрдЯреЗрдЯрдореЗрдиреНрдЯ рдЕрд╕рдлрд▓ рдирднрдПрд╕рдореНрдордХреЛ рдХрд╛рд░рдг рдмрдирд╛рдЙрдБрдЫред рдпрджреНрдпрдкрд┐, рдЕрд░реНрдХреЛ рд╕реВрдХреНрд╖реНрдо рдмрд┐рдиреНрджреБ рдЦреЗрд▓рдорд╛ рдЖрдЙрдБрдЫред рдЯреНрд░рд┐рдЧрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рднрдПрдХреЛ рд╕рдордпрдорд╛, рдкрд╣рд┐рд▓реЛ рд╕рдореНрдорд┐рд▓рд┐рдд рд░реЗрдХрд░реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рдХрдорд┐рдЯ рдЕрдЭреИ рдкреВрд░рд╛ рднрдПрдХреЛ рдЫреИрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрдирдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЯреНрд░рд┐рдЧрд░рд▓реЗ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдПрдЙрдЯрд╛ рдкрдЩреНрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдкреНрд░рддрд┐рдмрджреНрдз рдирднрдПрдХреЛ рд░реЗрдХрд░реНрдбрдорд╛ рд╡рд┐рджреЗрд╢реА рдХреБрдЮреНрдЬреАрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ рдкреНрд░рддрд┐рдХреНрд╖рд╛рдорд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдиреНрдЫ (рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрдирд▓реЗ рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫ рдХрд┐ рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рд▓реЗрдирджреЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд╖рд╛ рдЧрд░реНрджрдЫ) рд░ рдПрдХреИ рд╕рдордпрдорд╛ рдореБрдЦреНрдп рд▓реЗрдирджреЗрдирд▓реЗ рдЯреНрд░рд┐рдЧрд░ рдкрдЫрд┐ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫред рдПрдХ рдЧрддрд┐рд░реЛрдз рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ рд░, рдлрд▓рд╕реНрд╡рд░реВрдк, рддрд╛рд▓рд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд╛рд░рдгрд╣рд░реВрд▓реЗ рдЧрд░реНрджрд╛ рд╕реНрд╡рд╛рдпрддреНрдд рд▓реЗрдирджреЗрди рд░рджреНрдж рд╣реБрдиреНрдЫред.

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рдЧрд╛рд╣реНрд░реЛ рднрдпреЛ рдХрд┐ ?

  • рджреБрдИ рдФрдВрд▓рд╛рд╣рд░реВ рдЬрд╕реНрддреИ, рдореИрд▓реЗ рддреБрд░реБрдиреНрддреИ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдЧрд░реЗред

  • рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣реЛрдЗрди, рдо рдХреЗрд╣рд┐ рдкреНрд░рд╢реНрдирд╣рд░реВрдорд╛ рдЧрд▓рдд рдерд┐рдПрдБред

  • рдореИрд▓реЗ рдпрд╕рдХреЛ рдЖрдзрд╛ рд╕рд╣рд┐ рд╕рдорд╛рдзрд╛рди рдЧрд░реЗрдВред

  • рдореИрд▓реЗ рдЬрд╡рд╛рдл рджреБрдИ рдкрдЯрдХ рдЕрдиреБрдорд╛рди рдЧрд░реЗ!

  • рдХрдореЗрдиреНрдЯрдорд╛ рд▓реЗрдЦреНрдиреЗ рдЫреБ

14 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред 10 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди