Sqexplain info ????
Posted in 1999
Hi,
In a VB program (using RDO) on NT Workstation 4.0 SP3, running OLWS 7.22,
I have the following SQ Lstatement :
select * from tad where thr_id = ? and tad_order = 1 AND trl_id IS NULL
I generated a sqexplain.out file to check this query, and the sqexplain.out
file contains 3 different queries.
SELECT * FROM tad WHERE thr_id = ? AND tad_order = 1 AND trl_id IS NULLEstimated Cost: 2
Estimated # of Rows Returned: 1
1) informix.tad: INDEX PATH
Filters: informix.tad.tad_order = 1
(1) Index Keys: thr_id trl_id
Lower Index Filter: (informix.tad.thr_id = 359 AND
informix.tad.trl_id IS NULL )
SELECT * FROM tadEstimated Cost: 3
Estimated # of Rows Returned: 10
1) informix.tad: SEQUENTIAL SCAN
select con.owner,tabname,colname,colno,constrname, part1, part2, part3,
part4, part5,
part6, part7, part8, part9, part10, part11, part12, part13, part14,
part15, part16
FROM informix.systables t, informix.syscolumns c,informix.sysindexes i, informix.sysconstraints con
WHERE t.tabid = i.tabid AND t.tabid = con.tabid AND t.tabid =
c.tabid AND constrtype = 'P'
AND con.idxname = i.idxname AND con.owner = i.owner
AND (colno = part1 OR colno = part2 OR colno = part3 OR colno =
part4 OR colno = part5
OR colno = part6 OR colno = part7 OR colno = part8 OR colno = part9
OR colno = part10
OR colno = part11 OR colno = part12 OR colno = part13 OR colno =
part14 OR colno = part15
OR colno = part16) AND t.tabname = 'tad'
Estimated Cost: 9
Estimated # of Rows Returned: 1
1) pfornaci.con: SEQUENTIAL SCAN
Filters: pfornaci.con.constrtype = 'P'
2) pfornaci.t: INDEX PATH
Filters: pfornaci.t.tabname = 'tad'
(1) Index Keys: tabid
Lower Index Filter: pfornaci.t.tabid = pfornaci.con.tabid
3) pfornaci.i: INDEX PATH
(1) Index Keys: idxname owner tabid
Lower Index Filter: (pfornaci.i.idxname = pfornaci.con.idxname AND
(pfornaci.i.owner = pfornaci.con.owner AND pfornaci.i.tabid =
pfornaci.con.tabid ) )
4) pfornaci.c: INDEX PATH
Filters: (((((((((((((((pfornaci.c.colno = pfornaci.i.part1 OR
pfornaci.c.colno = pfornaci.i.part2 ) OR pfornaci.c.colno = pfornaci.i.part3
) OR pfornaci.c.colno = pfornaci.i.part4 ) OR pfornaci.c.colno =
pfornaci.i.part5 ) OR pfornaci.c.colno = pfornaci.i.part6 ) OR
pfornaci.c.colno = pfornaci.i.part7 ) OR pfornaci.c.colno = pfornaci.i.part8
) OR pfornaci.c.colno = pfornaci.i.part9 ) OR pfornaci.c.colno =
pfornaci.i.part10 ) OR pfornaci.c.colno = pfornaci.i.part11 ) OR
pfornaci.c.colno = pfornaci.i.part12 ) OR pfornaci.c.colno =
pfornaci.i.part13 ) OR pfornaci.c.colno = pfornaci.i.part14 ) OR
pfornaci.c.colno = pfornaci.i.part15 ) OR pfornaci.c.colno =
pfornaci.i.part16 )
(1) Index Keys: tabid colno
Lower Index Filter: pfornaci.c.tabid = pfornaci.con.tabid
What is the reason ?
Seems like the cost of the 2nd and 3rd query is not really null....
Any ideas ?
Thank you
Philippe Fornaciari
Summit Technologies International
p.fornaciari@summittechnologies.com