Когда выбираю "For Recorded Statement" то выходит сообщение:
"There is no execution plan for the statement of the selected trace record".
Поэтому выбираю "For Statement to be entered"
и там получаю:
SELECT
*
FROM
JVSO1
WHERE
RLDNR = '4A' AND RBUKRS = 'KZ01' AND ( RACCT = 'A2680009' OR RACCT = 'A2680011' OR RACCT =
'A2680012' OR RACCT = 'A2680013' OR RACCT = 'A2680014' OR RACCT = 'A2680015' OR RACCT =
'A2680016' OR RACCT = 'A2680017' ) AND DOCTY = 'P3' AND BUDAT = '20170313' AND REFFIDOC IN (
'1900006493' , '5110000038' , '1000000014' , '1000000013' )
Execution Plan
Sql_id: 2azdmq5xvrxy1
SELECT STATEMENT ( Estimated Costs = 29,664 , Estimated #Rows = 1 )
2 TABLE ACCESS BY INDEX ROWID JVSO1
( Estim. Costs = 29,663 , Estim. #Rows = 1 )
Estim. CPU-Costs = 1,614,141,029 Estim. IO-Costs = 29,650
Filter Predicates
1 INDEX SKIP SCAN JVSO1~REP
( Estim. Costs = 5,811 , Estim. #Rows = 3,134,988 )
Search Columns: 2
Estim. CPU-Costs = 172,495,101 Estim. IO-Costs = 5,810
Access Predicates Filter Predicates
А если сделать фильтр по REFFIDOC с одним значением, то получим:
SQL Statement
SELECT
*
FROM
JVSO1
WHERE
RLDNR = '4A' AND RBUKRS = 'KZ01' AND ( RACCT = 'A2680009' OR RACCT = 'A2680011' OR RACCT =
'A2680012' OR RACCT = 'A2680013' OR RACCT = 'A2680014' OR RACCT = 'A2680015' OR RACCT =
'A2680016' OR RACCT = 'A2680017' ) AND DOCTY = 'P3' AND BUDAT = '20170313' AND REFFIDOC =
'1900006493'
Execution Plan
Sql_id: 3kd1c2dcgar0m
SELECT STATEMENT ( Estimated Costs = 204 , Estimated #Rows = 1 )
2 TABLE ACCESS BY INDEX ROWID JVSO1
( Estim. Costs = 204 , Estim. #Rows = 1 )
Estim. CPU-Costs = 1,502,141 Estim. IO-Costs = 204
Filter Predicates
1 INDEX SKIP SCAN JVSO1~ZJV
( Estim. Costs = 200 , Estim. #Rows = 122 )
Search Columns: 2
Estim. CPU-Costs = 1,432,017 Estim. IO-Costs = 200
Access Predicates Filter Predicates
Я так понимаю Estimated Costs = 204 это быстро? В 1 варианте у меня Estimated Costs = 29,664.
А что значит "1 INDEX SKIP SCAN" индекс есть, но он пропущен - не использовался?
Вот сами индексы:
NONUNIQUE Index JVSO1~ZJV
Column Name #Distinct
RYEAR 10
REFFIDOC 88,417
REFFIDLN 999
RBUKRS 2
RJVNAM 5
NONUNIQUE Index JVSO1~REP
Column Name #Distinct
RCLNT 1
RLDNR 4
RRCTY 1
RVERS 1
RYEAR 10
RBUKRS 2
RJVNAM 5
POPER 12
Может мне надо создать индекс? Или так неправильно?