What was your coolest SQL optimization, on a slow performing query?

后端 未结 15 2155
遥遥无期
遥遥无期 2021-02-10 06:45

Just speaking to a colleague of mine. He was walking with a hop in his step, on the way to the coffee machine.

I asked him \"what\'s with the \'swarmy\' walk?\", he said

相关标签:
15条回答
  • 2021-02-10 07:26

    Well we had a similar thing where we had a slow query on a Open Freeway site. The answer wasn't so much optimising the query, but to optimise the server that it was on. We increased the cache limit and cache size so that the server would not run the query so often.

    This has massively increased the speed of the system and ultimately made the client happy! :)

    Not quite the calibre of the original posts optimisation skills, but it definitely made us buzz!

    0 讨论(0)
  • 2021-02-10 07:27

    Sorry, I don't tend to get a buzz from that sort of thing but most situations have been pretty basic, monitoring performance of queries and adding indexes to speed them up.

    Now increasing the speed of "real" code that I've written by changing data structures and algorithms within the class, that's where I get my buzz (and reputation a the go-to man for performance fixes at work).

    0 讨论(0)
  • 2021-02-10 07:29

    It's always nice to take a poorly written, cursor-laden query and eliminate cursors, cut the code by half, and improve performance many-fold.

    Some of the best improvements are in clarity (and often result in nice performance boosts, too).

    0 讨论(0)
  • 2021-02-10 07:33

    One Word, Dynamic Queries

    If you serching with large numbers of parameters you can discount them from the SQL string. This has sped up my queries dramatically and with reletive ease.

    Create PROCEDURE dbo.qryDynamic
    ( 
    
    @txtParameter1 nvarchar(255),
    @txtParameter2 nvarchar(255),
    
    AS
    SELECT     qry_DataFromAView.*
    FROM         qry_DataFromAView
    BEGIN
    
        DECLARE @SQL nvarchar(2500)
        DECLARE @txtJoin nvarchar(50)
    
        Set @txtJoin = ' Where '
    
        SET @SQL = 'SELECT     qry_DataFromAView.*
                    FROM         qry_DataFromAView'
    
        IF @txtParameter1 is not null
        Begin
            SET @SQL=@SQL + @txtJoin + ' Field1 LIKE N''%'' + @dynParameter1 + N''%'') '
            Set @txtJoin = ' And '
        end
    
    
        IF @txtParameter2 is not null
        Begin
            SET @SQL=@SQL + @txtJoin + ' Field2 LIKE N''%'' + @dynParameter2 + N''%'') '
            Set @txtJoin = ' And '
        end
    
        SET @SQL=@SQL + ' ORDER BY Field2'
    
    
        Exec sp_executesql @SQL, N'@dynParameter1 nvarchar(255), @dynParameter2 nvarchar(255)',  @dynParameter1 = @txtParameter1 ,@dynParameter2 = @txtParameter2
    
    END
    GO
    
    0 讨论(0)
  • 2021-02-10 07:33

    I have to say when I learned how to create and use covered indexes. Now, THAT was a performance booster.

    0 讨论(0)
  • 2021-02-10 07:33

    hey on the iphone which uses sqlite, i straight away reduced by database processing time from 40 seconds to 2 seconds with the use of exclusive write transactions... i was super happy doing this

    as this was my first experience of sql on an embedded device - quite different from the usual server related stuff (indexes, normalizations, etc etc)

    --- as far as servers go, indexes are real blessing. also if you take a bit of pain and get rid of as many nulls as you can in your table, you would be surprised with the performance gains - not many developers focus on nulls, they usually go with indexes and other documented stuff

    few other lesser exploited ways - using xml to process multiple batch inserts / updates / deletes at 1 go instead of doing 1 insert at a time - in sql 2005 this can be super cool

    0 讨论(0)
提交回复
热议问题