| Title: | DB Integrator Public Conference |
| Notice: | Database Integration - today! Kit/Doc info see note 36 |
| Moderator: | BROKE::ABUGOV |
| Created: | Mon Sep 21 1992 |
| Last Modified: | Fri Jun 06 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 1171 |
| Total number of notes: | 5187 |
Hello,
In this query, the Optimizer seems to have a direct access to the
first table (f0101) and he take a long time to access to the second table
(f0104) although there is a index defined .
In the production environment, the second table (RMS file) is 200.000
blocks large.
Is it possible to optimize this query to have a direct access on the
second table ?
DBI GTW for RMS V3.0D-0 on OVMS V6.2
In the next reply i'll posted the CDO description and the FDL files
Thanks in advance
didier
Here is the output with debug_flags = Q0
$define/job NSDS$DEFAULT_DICTIONARY_DRIVER sys$share:nsds$mdi_cdo_reader_shr.exe
$define/job nsds$debug_flags Q0
$sql
attach 'filename /type=nsds/pathname=WORKD$:[MISTLER.DBI.NSDS1]rms2.cdo';
select t0101_n001,t0101_n007,t0101_n041,t0104_n007,t0104_n008
from f0101,f0104
where t0101_n017 = t0104_n007
and t0101_n001 = '0501 ';
Access Plan/BRIEF [Inner<<Outer]
#: 0 RSE_CVARS_LIST cv# 1 = RDB$RELATIONS = id#11 (Pr)
#: 1 DRIVER_SELECT id#11 cv#1 (Pr) Select,
-- Set Exec
-- RDB$RELATIONS @
#: 2 OUTPUT id#11
Access Plan/BRIEF [Inner<<Outer]
#: 0 RSE_CVARS_LIST cv# 1 = RDB$RELATION_FIELDS = id#11 (Pr),
cv# 2 = RDB$FIELDS = id#11 (Sec)
#: 1 DRIVER_SELECT id#11 cv#1 (Pr) Select,
-- Set Exec
-- RDB$RELATION_FIELDS @
#: 2 DRIVER_SELECT id#11 cv#2 (Sec) ,
-- Set Exec
-- RDB$FIELDS @
#: 3 BINARY_JOIN id#11, cv#1 <<|X| cv#2 Hash Join Set
#: 4 SORT id#11 1:Desc L4@0,Long
#: 5 OUTPUT id#11
Access Plan/BRIEF [Inner<<Outer]
#: 0 RSE_CVARS_LIST cv# 1 = F0101 = id#11 (Pr),
cv# 2 = F0104 = id#11 (Sec)
#: 1 DRIVER_SELECT id#11 cv#1 (Pr) , Index Access Path (asc)
-- Set Exec
-- F0101 @TZ20101
Key#1 L5@5: [= "0501 " , = "0501 "]
#: 2 DRIVER_SELECT id#11 cv#2 (Sec) ,
-- Procedural Exec
-- F0104 @TZ20104
#: 3 BINARY_JOIN id#11, cv#1 <<|X| cv#2 Index Merge Procedural
Sort keys - 1:Asc L5@8,Text 2:Asc L4@0,Long
Merge access path (index) key -
Key#1 L5@12: [= "" , = ""]
#: 4 OUTPUT id#11
T0101_N001 T0101_N007 T0101_N041 T0104_N007 T0104_N008
0501 0 0501. CABLEURS LATE
1 row selected
exit
$exit
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 1061.1 | FDL and CDO descriptions | ORAREP::PRSSOS::MISTLER | Fri May 31 1996 05:39 | 1210 | |
Here are the @ FDL files and the CDO descriptions :
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>> Table f0101
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IDENT "31-MAY-1996 10:51:08 OpenVMS FDL Editor"
SYSTEM
SOURCE "OpenVMS"
FILE
ALLOCATION 88
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
CLUSTER_SIZE 4
CONTIGUOUS no
EXTENSION 12
FILE_MONITORING no
GLOBAL_BUFFER_COUNT 0
NAME "WORKD$:<MISTLER.DBI.NSDS1>TZ20101.DAT;1"
ORGANIZATION indexed
OWNER [1,1]
PROTECTION (system:RWED, owner:RWED, group:, world:)
RECORD
BLOCK_SPAN yes
CARRIAGE_CONTROL none
FORMAT fixed
SIZE 128
AREA 0
ALLOCATION 52
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 12
AREA 1
ALLOCATION 4
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 3
AREA 2
ALLOCATION 32
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 12
KEY 0
CHANGES no
DATA_AREA 0
DATA_FILL 78
DATA_KEY_COMPRESSION no
DATA_RECORD_COMPRESSION yes
DUPLICATES yes
INDEX_AREA 1
INDEX_COMPRESSION no
INDEX_FILL 78
LEVEL1_INDEX_AREA 1
NAME "t0101_n001"
NULL_KEY no
PROLOG 3
SEG0_LENGTH 5
SEG0_POSITION 5
TYPE string
KEY 1
CHANGES yes
DATA_AREA 2
DATA_FILL 78
DATA_KEY_COMPRESSION yes
DUPLICATES yes
INDEX_AREA 2
INDEX_COMPRESSION yes
INDEX_FILL 78
LEVEL1_INDEX_AREA 2
NAME "t0101_n017+t0101_n001"
NULL_KEY no
SEG0_LENGTH 10
SEG0_POSITION 0
TYPE string
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>> Table f0104
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IDENT "31-MAY-1996 10:50:27 OpenVMS FDL Editor"
SYSTEM
SOURCE "VAX/VMS"
FILE
CONTIGUOUS no
FILE_MONITORING no
GLOBAL_BUFFER_COUNT 0
ORGANIZATION indexed
RECORD
BLOCK_SPAN yes
CARRIAGE_CONTROL none
FORMAT fixed
SIZE 128
AREA 0
ALLOCATION 78
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 18
AREA 1
ALLOCATION 3
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 3
AREA 2
ALLOCATION 48
BEST_TRY_CONTIGUOUS yes
BUCKET_SIZE 3
EXTENSION 24
KEY 0
CHANGES no
DATA_AREA 0
DATA_FILL 79
DATA_KEY_COMPRESSION no
DATA_RECORD_COMPRESSION yes
DUPLICATES yes
INDEX_AREA 1
INDEX_COMPRESSION no
INDEX_FILL 79
LEVEL1_INDEX_AREA 1
NAME "t0104_n007"
NULL_KEY no
PROLOG 3
SEG0_LENGTH 5
SEG0_POSITION 12
TYPE string
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>> RMS2.CDO
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DEFINE FIELD T0101_F001
DATATYPE TEXT SIZE 74.
DEFINE FIELD T0101_N001
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0101_N002
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0101_N003
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N004
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N005
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0101_N006
DATATYPE TEXT SIZE 25.
DEFINE FIELD T0101_N007
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N010
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0101_N011
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0101_N012
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0101_N013
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N014
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N015
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0101_N017
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0101_N019
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0101_N020
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0101_N036
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0101_N037
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0101_N038
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0101_N039
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0101_N040
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0101_N041
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0101_N042
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0101_N800
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0101_N801
DATATYPE SIGNED WORD SCALE -1.
DEFINE FIELD T0101_N802
DATATYPE SIGNED WORD SCALE -1.
DEFINE FIELD T0101_N803
DATATYPE SIGNED WORD SCALE -1.
DEFINE FIELD T0101_N804
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N805
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0101_N850
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N851
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N852
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0101_N853
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_F001
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_F002
DATATYPE TEXT SIZE 22.
DEFINE FIELD T0104_N001
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N002
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N003
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0104_N004
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0104_N005
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0104_N006
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0104_N007
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_N008
DATATYPE TEXT SIZE 25.
DEFINE FIELD T0104_N009
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N010
DATATYPE PACKED DECIMAL SIZE IS 3 SCALE 0.
DEFINE FIELD T0104_N011
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N012
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N013
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N014
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0104_N015
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0104_N016
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N017
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0104_N018
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N019
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N020
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N021
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_N022
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0104_N023
DATATYPE SIGNED WORD SCALE -1.
DEFINE FIELD T0104_N024
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N025
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N026
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N027
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0104_N028
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N029
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0104_N030
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N031
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N032
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N033
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N034
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N035
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N036
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N037
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N038
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N039
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N040
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N051
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N052
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N053
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0104_N061
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0104_N062
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0104_N063
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0104_N064
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0104_N065
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_N066
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0104_N067
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0209_F001
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0209_F002
DATATYPE TEXT SIZE 26.
DEFINE FIELD T0209_F003
DATATYPE TEXT SIZE 23.
DEFINE FIELD T0209_N001
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0209_N002
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N003
DATATYPE PACKED DECIMAL SIZE IS 3 SCALE 0.
DEFINE FIELD T0209_N004
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N005
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N006
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N007
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N008
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N009
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N010
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N011
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N012
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N013
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N014
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0209_N015
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N016
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N017
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N018
DATATYPE PACKED
DECIMAL SIZE IS 3 SCALE 0.
DEFINE FIELD T0209_N019
DATATYPE TEXT SIZE 6.
DEFINE FIELD T0209_N020
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N021
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N022
DATATYPE PACKED DECIMAL SIZE IS 3 SCALE 0.
DEFINE FIELD T0209_N023
DATATYPE PACKED DECIMAL SIZE IS 3 SCALE 0.
DEFINE FIELD T0209_N024
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N025
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N026
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N027
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N028
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N029
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N030
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N031
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N032
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N033
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N034
DATATYPE TEXT SIZE 6.
DEFINE FIELD T0209_N035
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N036
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0209_N037
DATATYPE SIGNED WORD SCALE -2.
DEFINE FIELD T0209_N038
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N039
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N040
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N041
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N042
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N043
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N051
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N052
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N053
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N060
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0209_N061
DATATYPE TEXT SIZE 30.
DEFINE FIELD T0209_N062
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0209_N063
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0209_N064
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N065
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N066
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0209_N067
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N068
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0209_N069
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N070
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N071
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0209_N072
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0209_N073
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N074
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0209_N075
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N076
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0209_N077
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N078
DATATYPE TEXT SIZE 12.
DEFINE FIELD T0209_N079
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0209_N080
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0209_N081
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N082
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N083
DATATYPE D_FLOATING.
DEFINE FIELD T0209_N084
DATATYPE D_FLOATING.
DEFINE FIELD T0209_N085
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N086
DATATYPE D_FLOATING.
DEFINE FIELD T0209_N087
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0209_N088
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0209_N089
DATATYPE TEXT SIZE 12.
DEFINE FIELD T0209_N090
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0209_N091
DATATYPE TEXT SIZE 20.
DEFINE FIELD T0209_N092
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N093
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N094
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N095
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N096
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0209_N097
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0209_N098
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N099
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N100
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0209_N101
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N102
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N103
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0209_N104
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0209_N105
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0209_N106
DATATYPE D_FLOATING.
DEFINE FIELD T0209_N107
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0209_N108
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N109
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N110
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0209_N111
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0209_N112
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0209_N113
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N114
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0209_N115
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_F001
DATATYPE TEXT SIZE 26.
DEFINE FIELD T0601_F002
DATATYPE TEXT SIZE 17.
DEFINE FIELD T0601_N001
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0601_N002
DATATYPE TEXT SIZE 25.
DEFINE FIELD T0601_N003
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0601_N004
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N005
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N006
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N007
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N008
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N009
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N010
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N011
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N012
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N013
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N014
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N015
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N016
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N017
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N018
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N019
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N020
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N021
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N022
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N023
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N024
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N025
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0601_N026
DATATYPE TEXT SIZE 5.
DEFINE FIELD T0601_N027
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N028
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N029
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N030
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N031
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N032
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N033
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N034
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N035
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N036
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N037
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N038
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0601_N039
DATATYPE TEXT SIZE 12.
DEFINE FIELD T0601_N040
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N041
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N042
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N043
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N044
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0601_N045
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0601_N046
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0601_N047
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N048
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N049
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N050
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N053
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N054
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N055
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N056
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N057
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N058
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0601_N059
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0601_N060
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N061
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N062
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N063
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N064
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N066
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N067
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N068
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N069
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N071
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N072
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N073
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N074
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N075
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N076
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N077
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N078
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N079
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N080
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N081
DATATYPE SIGNED LONGWORD SCALE -2.
DEFINE FIELD T0601_N082
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N083
DATATYPE TEXT SIZE 6.
DEFINE FIELD T0601_N084
DATATYPE TEXT SIZE 32.
DEFINE FIELD T0601_N085
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N086
DATATYPE TEXT SIZE 6.
DEFINE FIELD T0601_N087
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0601_N088
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0601_N089
DATATYPE TEXT SIZE 12.
DEFINE FIELD T0601_N091
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N092
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N093
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N094
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N095
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0601_N096
DATATYPE TEXT SIZE 3.
DEFINE FIELD T0601_N097
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N098
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N131
DATATYPE TEXT SIZE 4.
DEFINE FIELD T0601_N132
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0601_N146
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N150
DATATYPE TEXT SIZE 10.
DEFINE FIELD T0601_N151
DATATYPE TEXT SIZE 8.
DEFINE FIELD T0601_N152
DATATYPE TEXT SIZE 6.
DEFINE FIELD T0601_N153
DATATYPE TEXT SIZE 14.
DEFINE FIELD T0601_N154
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N155
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N156
DATATYPE TEXT SIZE 2.
DEFINE FIELD T0601_N157
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N158
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N159
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N160
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N161
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N162
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE FIELD T0601_N163
DATATYPE SIGNED LONGWORD SCALE 0.
DEFINE FIELD T0601_N164
DATATYPE SIGNED LONGWORD SCALE -4.
DEFINE FIELD T0601_N165
DATATYPE TEXT SIZE 1.
DEFINE FIELD T0601_N166
DATATYPE TEXT SIZE 15.
DEFINE FIELD T0601_N167
DATATYPE SIGNED WORD SCALE -3.
DEFINE FIELD T0601_N168
DATATYPE SIGNED WORD SCALE 0.
DEFINE FIELD T0601_N169
DATATYPE SIGNED LONGWORD SCALE -3.
DEFINE RECORD RTZ20101.
T0101_N017.
T0101_N001.
T0101_N003.
T0101_N004.
T0101_N005.
T0101_N006.
T0101_N007.
T0101_N010.
T0101_N011.
T0101_N012.
T0101_N013.
T0101_N014.
T0101_N015.
T0101_N019.
T0101_N020.
T0101_N036.
T0101_N037.
T0101_N805.
T0101_N038.
T0101_N039.
T0101_N040.
T0101_N041.
T0101_N042.
T0101_N002.
T0101_N800.
T0101_N801.
T0101_N802.
T0101_N803.
T0101_N804.
T0101_N850.
T0101_N851.
T0101_N852.
T0101_N853.
T0101_F001.
END RECORD.
define rms_database rms_TZ20101.
RECORD RTZ20101.
file_definition
organization indexed
format fixed.
keys.
key 0
segment T0101_N001 in RTZ20101
.
key 1
duplicates
segment T0101_N017 in RTZ20101
segment T0101_N001 in RTZ20101
.
end keys.
end rms_TZ20101 rms_database.
define database F0101
using rms_TZ20101 on TZ20101.
DEFINE RECORD RTZ20104.
T0104_N061.
T0104_N062.
T0104_N007.
T0104_N001.
T0104_N002.
T0104_N003.
T0104_N004.
T0104_N005.
T0104_N008.
T0104_N009.
T0104_N066.
T0104_N010.
T0104_N065.
T0104_N011.
T0104_N012.
T0104_N013.
T0104_N014.
T0104_N015.
T0104_N016.
T0104_N017.
T0104_N018.
T0104_N019.
T0104_N020.
T0104_N021.
T0104_N022.
T0104_N023.
T0104_N024.
T0104_N025.
T0104_N026.
T0104_N027.
T0104_N028.
T0104_N029.
T0104_N031.
T0104_N067.
T0104_N032.
T0104_F001.
T0104_N033.
T0104_N034.
T0104_N035.
T0104_N036.
T0104_N037.
T0104_N038.
T0104_N039.
T0104_N040.
T0104_N051.
T0104_N053.
T0104_N063.
T0104_N064.
T0104_N006.
T0104_N030.
T0104_N052.
T0104_F002.
END RECORD.
define rms_database rms_TZ20104.
RECORD RTZ20104.
file_definition
organization indexed
format fixed.
keys.
key 0
segment T0104_N007 in RTZ20104
.
end keys.
end rms_TZ20104 rms_database.
define database F0104
using rms_TZ20104 on TZ20104.
| |||||
| 1061.2 | Won't use index in the current code base. | BROKE::ABUGOV | Tue Jun 18 1996 15:32 | 151 | |
Hi Didier,
One of the engineers looked at the query and recognized it as a query
where the RMS gateway doesn't recognize the opportunity to use
additional indexes.
Here is a write up of the problem. I'm sorry, but the customer may
have to break up their query into two pieces. The first would select
the data from f0101 where t0101_n001 = '0501 ' and the next query would
use column t0101_n017 returned from the previous query and join it
against column t0104_n007 in f0104. I'm sorry the news isn't better -
we are looking at ways to add functionality to recognize this case as
mentioned in the attached message.
Regards,
Dan
=*=
SUBJECT:
During a join of two tables the where clause contains two predicate
values all of which are keys. One of the keys is a unique key and is
not being used as an index. The CDO and RMS definitions match each other.
Example:
Table: SHIPMENT_HEADER
key 0 ship_no (unique)
key 1 cus_key (dups & mods)
key 2 tck_date (dups & mods)
key 3 ship_date (dups & mods)
Table: SHIPMENT_DETAIL
key 0 ship_no (key 0 is a segmented key consisting of 3 segments.
det_no All three segments together are unique.)
det_suf
key 1 shp_whs (key 1 is a segmented key consisting of 3 segments.
prd_id All three segments together allow dups & mods.)
ship_no
key 2 prd_id (dups & mods)
key 3 tck_date (dups & mods)
SQL> select h.ship_no, h.cus_key, d.shp_whs, d.prd_id
cont> from shipment_header h, shipment_detail d
cont> where h.ship_date='19950809' and
cont> h.ship_no=d.ship_no;
This query uses key h.ship_date but not key h.ship_no and consequently
not key d.ship_no. Therefore, the rows in table shipment_header where
h.ship_date='19950809' are found right away using h.ship_date as a key but
a sequential search is done through the entire shipment_detail table
to find the matching rows rather than using key d.ship_no to find the
matching rows.
DESCRIPTION:
This is expected behavior.
The way the query optimizer currently works in NSDS is that it uses
h.ship_date as a key for table shipment_header because h.ship_date='19950809'
restricts the table shipment_header. H.ship_no=d.ship_no represents a
join key and does not in itself restrict either file. Also, there are
no predicates that directly restrict table shipment_detail. As a
result, table shipment_header is read first using h.ship_date='19950809'
to filter the data. The shipment_detail table will be read and joined
to the filtered result from shipment_header using h.ship_no=d.ship_no
to filter the input from shipment_detail.
For purposes of doing the join, NSDS does not also check that h.ship_no
in table shipment_header is a key. So it has no way of knowing that
h.ship_no is a unique key in this table. The fact that the optimizer does
not check this second field for key information is a design decision based
on tradeoffs. It is not clear that the additional overhead and associated
performance penalty which would be required in all cases to evaluate for
the uniqueness of h.ship_no is worth the cost.
Future design modifications are being considered to address this issue
either in the current RMS gateway or in a potential follow-on product.
Given that NSDS does not know that h.ship_no is a unique key and that
d.ship_no is not unique, a generic behavior is needed that is applied to
all cases. It could behave in one of two ways. It could behave as though
field h.ship_no were a unique key and consequently use d.ship_no as a key
into the second file to find the matching rows, or it could behave as though
the field were not a unique key and sequentially search through the entire
second file for matching values. This second behavior is the current
behavior. There are advantages to both behaviors and it was decided that
the advantages of the second behavior outweigh the advantages of the first.
This is because there may be situations where field h.ship_no is a key
allowing duplicates rather than a unique key as in our original example.
In this case it is possible that more rows could be read from the
second file than exist in the second file. Consider the following example:
File: SHIPMENT_HEADER (H) File: SHIPMENT_DETAIL (D)
Ship_date | Ship_no | ... Ship_no | ...
----------------------------- ---------------------------
... Total rows in this file=500,000
19950809 100 ...
19950809 150 50 (40,000 matching rows)
19950809 150 100 (10,000 matching row)
19950809 300 150 (20,000 matching rows)
19950809 400 300 (100,000 matching rows)
19950809 400 400 (260,000 matching rows)
19950809 400 500 (50,000 matching rows)
19950809 400 900 (20,000 matching rows)
...
If the behavior used column d.ship_no as a key based on the value of column
h.ship_no, then to find all the matching rows from table shipment_detail
where ship_date='19950809' the following number of rows would be read:
100 - 10,000
150 - (2 x 20,000) or 40,000
300 - 100,000
400 - (4 x 260,000) or 1,040,000
Which is a total of 1,190,000 rows read from a file with only 500,000
rows in it.
Current behavior would read all 500,000 rows in the table and do the join,
but the advantage is that it is guaranteed that no more than the maximum
number of rows in the second table would ever be read.
Of course there are situations where the first behavior would be
more desirable especially in the case where h.ship_no is unique as
in our original example:
File: SHIPMENT_HEADER (H) File: SHIPMENT_DETAIL (D)
Ship_date | Ship_no | ... Ship_no | ...
----------------------------- ---------------------------
... Total rows in this file=100,000
19950809 100 ...
19950809 300 100 (2 matching rows)
... 300 (5 matching rows)
If the first behaviour was used, this would result in reading seven rows
rather than 100,000 rows, a significant cost savings. However, as mentioned
above it is not clear that the cost performance penalty that would be
incurred in all cases in making NSDS know this key fact would be worth
the performance payoff in some specific cases.
Therefore, NSDS was designed to avoid the cost performance penalty
of evaluating the uniqueness of h.ship_date and given this design decision,
was further designed to use the most cost-effective behaviour that would
apply in the majority of situations.
=*=
| |||||