powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / cost плана запроса при select и update
6 сообщений из 6, страница 1 из 1
cost плана запроса при select и update
    #40115857
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возникли вопросы, где искать ответы? ну а если у кого уже есть - отсыпьте немного, пожалуйста:
почему при select на стоимость влияет условие where rownum < n где n - некая константа
а при update это же условие на costs в плане не влияет?
планы смотрел в v$sql_plan

IdOperationNameRowsBytesCostTime0UPDATE STATEMENT1152867800:00:011. UPDATEtablitchko* 2.. COUNT STOPKEY3... PARTITION RANGE SINGLE914248138965696867800:00:01* 4.... TABLE ACCESS FULLtablitchko914248138965696867800:00:01
IdOperationNameRowsBytesCostTime0SELECT STATEMENT1152200:00:01* 1. COUNT STOPKEY2.. PARTITION RANGE SINGLE3456200:00:01* 3... TABLE ACCESS FULLtablitchko3456200:00:01
...
Рейтинг: 0 / 0
cost плана запроса при select и update
    #40115868
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как всегда забыл самое важное - таблица разбита на партиции по обновляемому полю, при этом происходит перемещение из партиции в партицию. но вопрос то же
...
Рейтинг: 0 / 0
cost плана запроса при select и update
    #40116040
Вопрошатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно стоило начать с того, что показать 2 апдейта с планами. при n=2 и 20000 например.
...
Рейтинг: 0 / 0
cost плана запроса при select и update
    #40116134
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрошатель
возможно стоило начать с того, что показать 2 апдейта с планами. при n=2 и 20000 например.

Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
declare
   str varchar2(2000) := '
create table TABL_LEGG
(
  id            NUMBER  generated by default as identity,
  a_col0        NUMBER INVISIBLE DEFAULT 0,
  a_col1        VARCHAR2(100) not null,
  a_col2        VARCHAR2(128) not null,
  a_col3        NUMBER,
  a_col4        NUMBER,
  a_col5        CHAR(1) default ''0'' not null,
  a_col6        NUMBER not null,
  a_col7        VARCHAR2(3) not null,
  a_col8        DATE not null,
  a_col9        NUMBER not null,
  a_col10       TIMESTAMP(6) not null
)
 
';
   curtxt varchar2(20000) := '';
begin
   execute immediate str;
   str := '
declare
begin
 
   for ii in 1..100000 loop
      insert into TABL_LEGG (a_col1, a_col2, a_col3, a_col4, a_col6, a_col7, a_col8, a_col9, a_col10) values
                            (dbms_random.string(''x'',100), dbms_random.string(''x'',128), dbms_random.value, dbms_random.value, dbms_random.value,
                             dbms_random.string(''x'',3), sysdate- dbms_random.value(1,24)/24, dbms_random.value, systimestamp-dbms_random.value(1,60)/24/60);
   end loop; 
   commit;
 
end;  
   ';
   execute immediate str;
  
   str := 'begin
   for ii in (select * from TABL_LEGG where rownum <2) loop
      exit;
   end loop;
   for txt in (select * from table(dbms_xplan.display_cursor)) loop
      dbms_output.put_line(txt.plan_table_output);
   end loop;   end;';
   execute immediate str;
   str := 'begin  for ii in (select * from TABL_LEGG where rownum <10000) loop
      exit;
   end loop;
   for txt in (select * from table(dbms_xplan.display_cursor)) loop
      dbms_output.put_line(txt.plan_table_output);
   end loop;   end;';
   execute immediate str;
   
   
   str := 'begin update TABL_LEGG set a_col0= 1 where rownum <2;
   rollback;
   for txt in (select * from table(dbms_xplan.display_cursor)) loop
      dbms_output.put_line(txt.plan_table_output);
   end loop;  end;';
   execute immediate str;  
   
   str := 'begin update TABL_LEGG set a_col0= 1 where rownum <10000;
   rollback;
   for txt in (select * from table(dbms_xplan.display_cursor)) loop
      dbms_output.put_line(txt.plan_table_output);
   end loop;   end;';
   execute immediate str;  
   
 
  
   
   
   str := 'drop table TABL_LEGG';
   execute immediate str;
  
end;



результат:
Код: html
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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
SQL_ID  1gcfvzw4wj8vd, child number 1
-------------------------------------
SELECT * FROM TABL_LEGG WHERE ROWNUM <2
 
Plan hash value: 2568330999
 
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |       |       |     3 (100)|          |
|*  1 |  COUNT STOPKEY     |           |       |       |            |          |
|   2 |   TABLE ACCESS FULL| TABL_LEGG |   110K|    22M|     3  (34)| 00:00:01 |
--------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter(ROWNUM<2)
 
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
 
SQL_ID  4wbqvckxgyzmh, child number 0
-------------------------------------
SELECT * FROM TABL_LEGG WHERE ROWNUM <10000
 
Plan hash value: 2568330999
 
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |       |       |   127 (100)|          |
|*  1 |  COUNT STOPKEY     |           |       |       |            |          |
|   2 |   TABLE ACCESS FULL| TABL_LEGG |   110K|    22M|   127   (1)| 00:00:01 |
--------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter(ROWNUM<10000)
 
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
 
SQL_ID  4k8c56n76vbrx, child number 0
-------------------------------------
UPDATE TABL_LEGG SET A_COL0= 1 WHERE ROWNUM <2
 
Plan hash value: 3658188826
 
---------------------------------------------------------------------------------
| Id  | Operation           | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT    |           |       |       |  1366 (100)|          |
|   1 |  UPDATE             | TABL_LEGG |       |       |            |          |
|*  2 |   COUNT STOPKEY     |           |       |       |            |          |
|   3 |    TABLE ACCESS FULL| TABL_LEGG |   110K|  1399K|  1366   (1)| 00:00:01 |
---------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - filter(ROWNUM<2)
 
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
 
SQL_ID  61cw1ny14fqb6, child number 0
-------------------------------------
UPDATE TABL_LEGG SET A_COL0= 1 WHERE ROWNUM <10000
 
Plan hash value: 3658188826
 
---------------------------------------------------------------------------------
| Id  | Operation           | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT    |           |       |       |  1366 (100)|          |
|   1 |  UPDATE             | TABL_LEGG |       |       |            |          |
|*  2 |   COUNT STOPKEY     |           |       |       |            |          |
|   3 |    TABLE ACCESS FULL| TABL_LEGG |   110K|  1399K|  1366   (1)| 00:00:01 |
---------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - filter(ROWNUM<10000)
 
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)




почему cost третьего и четвёртого планов совпадают? (
...
Рейтинг: 0 / 0
cost плана запроса при select и update
    #40116270
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
cost плана запроса при select и update
    #40116394
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov

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


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