• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 484
  • Last Modified:

How to optimize the following query?

Hi,

Using this wrong sql statement, please optimize it using minimum line of sql, preferability 1 line. ltt_id is always 0, the reason i put it as part of sql as i want to bring up my temp_pipe table as b alias. I tried not use plsql.

update b$premise_point_sdogeom a set sdo_x1=b.sdo_x1,sdo_y1=b.sdo_y1 where g3e_fid in (select g3e_fid from temp_pipe4 c) and ltt_id in (select 0 from temp_pipe b where c.node1_id=b.node1_id and c.sdo_x1=b.sdo_x2);

sql error :
ERROR at line 1:
ORA-00904: "B"."SDO_Y1": invalid identifier


SQL> desc temp_pipe4
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------

 G3E_FID                                            NUMBER(10)
 NODE1_ID                                           NUMBER(10)

SQL> desc temp_pipe
 Name                                      Null?    Type
 ----------------------------------------- -------- -----------

 G3E_FID                                            NUMBER(10)
 NODE1_ID                                           NUMBER(10)
 NODE2_ID                                           NUMBER(10)
 SDO_X1                                             FLOAT(126)
 SDO_Y1                                             FLOAT(126)
 SDO_X2                                             FLOAT(126)
 SDO_Y2                                             FLOAT(126)


SQL> desc b$premise_point_sdogeom
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------

 G3E_ID                                             NUMBER(10)
 G3E_FID                                            NUMBER(10)
 G3E_CID                                            NUMBER(10)
 G3E_FNO                                            NUMBER(5)
 G3E_CNO                                            NUMBER(5)
 SDO_GID                                            NUMBER
 SDO_ESEQ                                           NUMBER
 SDO_ETYPE                                          NUMBER
 SDO_SEQ                                            NUMBER
 GDO_ATTRIBUTES                                     NUMBER
 GDO_NORMAL1                                        FLOAT(126)
 GDO_NORMAL2                                        FLOAT(126)
 GDO_NORMAL3                                        FLOAT(126)
 GDO_RADIUS                                         FLOAT(126)
 SDO_ORIENTATION                                    FLOAT(126)
 SDO_X1                                             FLOAT(126)
 SDO_Y1                                             FLOAT(126)
 LTT_ID                                    NOT NULL NUMBER
 LTT_STATUS                                         VARCHAR2(6)
 LTT_DATE                                           DATE
 LTT_TID                                            NUMBER
0
engowen
Asked:
engowen
1 Solution
 
cjardCommented:
optimize for what?

you can reduce the number of characters to 1 line of SQL, sure, but that isnt going to necessarily generate a fast query. if youre optimizing for speed, your query string will actually (usually) be longer..

if you want a query to run with any speed, dont use IN
0
 
earth man2Commented:
0
 
jrb1Commented:
Sorry...not short in characters....should get rid of your error though.

update b$premise_point_sdogeom a
set (sdo_x1, sdo_y1) = (select b.sdo_x1,b.sdo_y1
                                    from temp_pipe b
                                         , temp_pipe4 c
                                 where a.g3e_fid = c.g3e_fid
                                     and c.node1_id=b.node1_id
                                     and c.sdo_x1=b.sdo_x2)
where exists (select null
                      from temp_pipe b
                            , temp_pipe4 c
                     where a.g3e_fid = c.g3e_fid
                         and c.node1_id=b.node1_id
                          and c.sdo_x1=b.sdo_x2);
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now