Results 1 to 4 of 4

Thread: Sql Tuning

  1. #1
    Join Date
    Jan 2004
    Location
    India
    Posts
    191

    Unanswered: Sql Tuning

    Hi,

    Can the below update queries combine into a single update query.
    PHP Code:
      SQLStatment := 'Update ITEM_MASTER IM ';
      
    SQLStatment := SQLStatment || 'Set HPL_CODE = ';
      
    SQLStatment := SQLStatment || '(Select Distinct Nvl(Substr(RTrim(FT.ITEM_NUMBER), 20, 3), '' '') ';
      
    SQLStatment := SQLStatment || '  From ' || staging || '.BOOKING_LINE FT ';
      
    SQLStatment := SQLStatment || '  Where Substr(FT.ITEM_NUMBER, 19, 1) = ''-'' ';
      
    SQLStatment := SQLStatment || '    And RTrim(Substr(FT.ITEM_NUMBER, 20, 3)) Is Not Null ';
      
    SQLStatment := SQLStatment || '    And IM.DB_CODE = FT.DB_CODE ';
      
    SQLStatment := SQLStatment || '    And IM.ITEM_NUMBER = FT.ITEM_NUMBER ';
      
    SQLStatment := SQLStatment || '    And FT.LINE_TYPE = ''M'' ';
      
    SQLStatment := SQLStatment || ') ';
      
    SQLStatment := SQLStatment || 'Where HPL_CODE Like '' %'' ';
      
    SQLStatment := SQLStatment || '  And Length(ITEM_NUMBER) = 22 ';
      
    SQLStatment := SQLStatment || '  And Exists ';
      
    SQLStatment := SQLStatment || '(Select Null ';
      
    SQLStatment := SQLStatment || '  From ' || staging || '.BOOKING_LINE FT ';
      
    SQLStatment := SQLStatment || '  Where Substr(FT.ITEM_NUMBER, 19, 1) = ''-'' ';
      
    SQLStatment := SQLStatment || '    And RTrim(Substr(FT.ITEM_NUMBER, 20, 3)) Is Not Null ';
      
    SQLStatment := SQLStatment || '    And IM.DB_CODE = FT.DB_CODE ';
      
    SQLStatment := SQLStatment || '    And IM.ITEM_NUMBER = FT.ITEM_NUMBER ';
      
    SQLStatment := SQLStatment || '    And FT.LINE_TYPE = ''M'' ';
      
    SQLStatment := SQLStatment || ') ';
      
    EXECUTE IMMEDIATE SQLStatment
    Second Update query
    PHP Code:
    SQLStatment := 'Update ITEM_MASTER IM ';
      
    SQLStatment := SQLStatment || 'Set HPL_CODE = ';
      
    SQLStatment := SQLStatment || '(Select Distinct Nvl(Substr(RTrim(FT.ITEM_NUMBER), 20, 3), '' '') ';
      
    SQLStatment := SQLStatment || '  From ' || staging || '.BACKLOG_LINE FT ';
      
    SQLStatment := SQLStatment || '  Where Substr(FT.ITEM_NUMBER, 19, 1) = ''-'' ';
      
    SQLStatment := SQLStatment || '    And RTrim(Substr(FT.ITEM_NUMBER, 20, 3)) Is Not Null ';
      
    SQLStatment := SQLStatment || '    And IM.DB_CODE = FT.DB_CODE ';
      
    SQLStatment := SQLStatment || '    And IM.ITEM_NUMBER = FT.ITEM_NUMBER ';
      
    SQLStatment := SQLStatment || '    And FT.LINE_TYPE = ''M'' ';
      
    SQLStatment := SQLStatment || ') ';
      
    SQLStatment := SQLStatment || 'Where HPL_CODE Like '' %'' ';
      
    SQLStatment := SQLStatment || '  And Length(ITEM_NUMBER) = 22 ';
      
    SQLStatment := SQLStatment || '  And Exists ';
      
    SQLStatment := SQLStatment || '(Select Null ';
      
    SQLStatment := SQLStatment || '  From ' || staging || '.BACKLOG_LINE FT ';
      
    SQLStatment := SQLStatment || '  Where Substr(FT.ITEM_NUMBER, 19, 1) = ''-'' ';
      
    SQLStatment := SQLStatment || '    And RTrim(Substr(FT.ITEM_NUMBER, 20, 3)) Is Not Null ';
      
    SQLStatment := SQLStatment || '    And IM.DB_CODE = FT.DB_CODE ';
      
    SQLStatment := SQLStatment || '    And IM.ITEM_NUMBER = FT.ITEM_NUMBER ';
      
    SQLStatment := SQLStatment || '    And FT.LINE_TYPE = ''M'' ';
      
    SQLStatment := SQLStatment || ') ';
      
    EXECUTE IMMEDIATE SQLStatment
    Thanks in advance
    Pagnint
    (No need to search web before posting new question)

  2. #2
    Join Date
    May 2004
    Location
    BA [ARG]
    Posts
    137
    I think you posted the same query, cannot find any difference!

  3. #3
    Join Date
    Jan 2004
    Location
    India
    Posts
    191
    Hi,

    Sql queries for both the update queries are different. One query depends on Backlog_line and other depends on booking_line.

    Thanks
    Pagnint
    (No need to search web before posting new question)

  4. #4
    Join Date
    Sep 2002
    Location
    UK
    Posts
    5,171
    Provided Answers: 1
    For future reference, it would be easier for all if you could post just the SQL statements, without all the irrelevant dynamic wrapping. Helps us see the wood for the trees!

    I guess it would be possible to combine the 2 updates into one, but it may not be worth the effort. For a start, how to do it depends on how the individual updates interact: what if there is a match in both booking_line and backlog_line, which update "wins" then? Or is it impossible for both to match? In that case perhaps a simple UNION in both subqueries could be used. However, the SQL will be more complex to read, and may not perform any better (may even be worse), so it may not be worthwhile.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •