Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Advice on Perfomance Turning of the Query

Advice on Perfomance Turning of the Query

Scheduled Pinned Locked Moved Database
database
5 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    Vimalsoft Pty Ltd
    wrote on last edited by
    #1

    hi guys I need some advice , i have a Query that runs very long because of the following lines of Code , i know you dont understand my data or table structure , you can just advice on a High Level

    			             ( CASE WHEN ( SELECT TOP 1
                                                ATTRIB\_CODE
                                      FROM      SDE.\[NOTIFICATION\] WITH ( NOLOCK )
                                      WHERE     ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = LP.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                  AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                )
                                                AND ARCHIVE\_DATE IS NULL
                                    ) LIKE '00090009%'
                               THEN ( SELECT TOP 1
                                                ATTRIB\_CODE COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                      FROM      SDE.\[NOTIFICATION\] N WITH ( NOLOCK )
                                      WHERE     N.ARCHIVE\_DATE IS NULL
                                                AND N.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                AND N.LIS\_KEY  COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                AND N.ATTRIB\_CODE LIKE '00090009%'
                                                AND N.ARCHIVE\_DATE IS NULL
                                                AND V.ARCHIVE\_DATE IS NULL
                                    )
                               ELSE ISNULL(( SELECT TOP 1
                                                    ATTRIBUTE\_CODE
                                             FROM   SDE.VALUATION WITH ( NOLOCK )
                                             WHERE  ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                    )
                                                    AND VAL\_STATUS\_ID = 2
                                                    AND ARCHIVE\_DATE IS NULL
                                           ),
    
    P L M 3 Replies Last reply
    0
    • V Vimalsoft Pty Ltd

      hi guys I need some advice , i have a Query that runs very long because of the following lines of Code , i know you dont understand my data or table structure , you can just advice on a High Level

      			             ( CASE WHEN ( SELECT TOP 1
                                                  ATTRIB\_CODE
                                        FROM      SDE.\[NOTIFICATION\] WITH ( NOLOCK )
                                        WHERE     ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = LP.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                    AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                  )
                                                  AND ARCHIVE\_DATE IS NULL
                                      ) LIKE '00090009%'
                                 THEN ( SELECT TOP 1
                                                  ATTRIB\_CODE COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                        FROM      SDE.\[NOTIFICATION\] N WITH ( NOLOCK )
                                        WHERE     N.ARCHIVE\_DATE IS NULL
                                                  AND N.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                  AND N.LIS\_KEY  COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                  AND N.ATTRIB\_CODE LIKE '00090009%'
                                                  AND N.ARCHIVE\_DATE IS NULL
                                                  AND V.ARCHIVE\_DATE IS NULL
                                      )
                                 ELSE ISNULL(( SELECT TOP 1
                                                      ATTRIBUTE\_CODE
                                               FROM   SDE.VALUATION WITH ( NOLOCK )
                                               WHERE  ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                        AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      )
                                                      AND VAL\_STATUS\_ID = 2
                                                      AND ARCHIVE\_DATE IS NULL
                                             ),
      
      P Offline
      P Offline
      PIEBALDconsult
      wrote on last edited by
      #2

      SQL Server? Did you check the execution plan?

      1 Reply Last reply
      0
      • V Vimalsoft Pty Ltd

        hi guys I need some advice , i have a Query that runs very long because of the following lines of Code , i know you dont understand my data or table structure , you can just advice on a High Level

        			             ( CASE WHEN ( SELECT TOP 1
                                                    ATTRIB\_CODE
                                          FROM      SDE.\[NOTIFICATION\] WITH ( NOLOCK )
                                          WHERE     ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = LP.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                    )
                                                    AND ARCHIVE\_DATE IS NULL
                                        ) LIKE '00090009%'
                                   THEN ( SELECT TOP 1
                                                    ATTRIB\_CODE COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                          FROM      SDE.\[NOTIFICATION\] N WITH ( NOLOCK )
                                          WHERE     N.ARCHIVE\_DATE IS NULL
                                                    AND N.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                    AND N.LIS\_KEY  COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                    AND N.ATTRIB\_CODE LIKE '00090009%'
                                                    AND N.ARCHIVE\_DATE IS NULL
                                                    AND V.ARCHIVE\_DATE IS NULL
                                        )
                                   ELSE ISNULL(( SELECT TOP 1
                                                        ATTRIBUTE\_CODE
                                                 FROM   SDE.VALUATION WITH ( NOLOCK )
                                                 WHERE  ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                          AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                        )
                                                        AND VAL\_STATUS\_ID = 2
                                                        AND ARCHIVE\_DATE IS NULL
                                               ),
        
        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #3

        Vuyiswa Maseko wrote:

        you can just advice on a High Level

        There is a high level checklist for performance here[^]. I'd recommend against optimizer hints unless you can explain how SQL server handles locking. I'd also recommend on removing the collation-checks; it would be set once for the server, and not be repeated in each query as that takes extra time. It also looks a lot like logic that could be run when inserting/updating the record. If that is not helping enough, then look into partitioning the table.

        Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]

        1 Reply Last reply
        0
        • V Vimalsoft Pty Ltd

          hi guys I need some advice , i have a Query that runs very long because of the following lines of Code , i know you dont understand my data or table structure , you can just advice on a High Level

          			             ( CASE WHEN ( SELECT TOP 1
                                                      ATTRIB\_CODE
                                            FROM      SDE.\[NOTIFICATION\] WITH ( NOLOCK )
                                            WHERE     ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = LP.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                        AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      )
                                                      AND ARCHIVE\_DATE IS NULL
                                          ) LIKE '00090009%'
                                     THEN ( SELECT TOP 1
                                                      ATTRIB\_CODE COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                            FROM      SDE.\[NOTIFICATION\] N WITH ( NOLOCK )
                                            WHERE     N.ARCHIVE\_DATE IS NULL
                                                      AND N.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      AND N.LIS\_KEY  COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                      AND N.ATTRIB\_CODE LIKE '00090009%'
                                                      AND N.ARCHIVE\_DATE IS NULL
                                                      AND V.ARCHIVE\_DATE IS NULL
                                          )
                                     ELSE ISNULL(( SELECT TOP 1
                                                          ATTRIBUTE\_CODE
                                                   FROM   SDE.VALUATION WITH ( NOLOCK )
                                                   WHERE  ( LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.LIS\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                            AND FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS = V.FUNCTION\_KEY COLLATE SQL\_Latin1\_General\_CP1\_CI\_AS
                                                          )
                                                          AND VAL\_STATUS\_ID = 2
                                                          AND ARCHIVE\_DATE IS NULL
                                                 ),
          
          M Offline
          M Offline
          Mycroft Holmes
          wrote on last edited by
          #4

          As a last resort look into Parameter Sniffing[^], I know it sounds like a perversion but it can be an issue. Basically the work around is to create a set of local variables for each parameter passed into the proc and use the local variables in the proc and not the parameters.

          Never underestimate the power of human stupidity RAH

          V 1 Reply Last reply
          0
          • M Mycroft Holmes

            As a last resort look into Parameter Sniffing[^], I know it sounds like a perversion but it can be an issue. Basically the work around is to create a set of local variables for each parameter passed into the proc and use the local variables in the proc and not the parameters.

            Never underestimate the power of human stupidity RAH

            V Offline
            V Offline
            Vimalsoft Pty Ltd
            wrote on last edited by
            #5

            Thank you very much for the Advice, no my Query runs for 5 Min on 800 000 Records

            Vuyiswa Maseko, Spoted in Daniweb-- Sorry to rant. I hate websites. They are just wierd. They don't behave like normal code. C#/VB.NET/ASP.NET/SQL7/2000/2005/2008 http://www.vuyiswamaseko.com vuyiswa[at]dotnetfunda.com http://www.Dotnetfunda.com

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • World
            • Users
            • Groups