chache queries

  • Hi ,

    Do you happen to know of a way to invalidate cached query plans?

    I would rather target a specific query instead of invalidating all of them.

    Also do you know of any sql server setting that will cause cached query plans to invalidate even though only one character in the queries has changed?

    exec sp_executesql N'select

    cast(5 as int) as DisplaySequence,

    mt.Description + '' '' + ct.Description as Source,

    c.FirstName + '' '' + c.LastName as Name,

    cus.CustomerNumber Code,

    c.companyname as "Company Name",

    a.Address1,

    a.Address2,

    a.City,

    sp.Abbreviation,

    a.PostalCode,

    cphone.PhoneNumber as Phone,

    cfax.PhoneNumber as Fax,

    ccell.PhoneNumber as Cell,

    cemail.EmailAddress as Email,

    wa.WebAddress as Web,

    cl.Id as Id,

    c.Id as ContactId

    from

    contactlink cl

    left join ContactTypes ct on ct.id = cl.ContactTypeID

    left join Contacts c on c.ID = cl.ContactID

    left join Customers cus on cus.id = cl.CustomerID

    left join MasterTypes mt on mt.id = ct.MasterTypeID

    left join contactaddresslink cal on cal.ContactID = c.id

    left join Addresses a on a.id = cal.AddressID

    left join StatesProvinces sp on sp.id = a.StateProvinceID

    left join ContactPhoneLink cpl_phone on cpl_phone.ContactID = c.id and cpl_phone.PhoneTypeID = 1

    left join phones cphone on cphone.id=cpl_phone.PhoneID

    left join ContactPhoneLink cpl_fax on cpl_fax.ContactID = c.id and cpl_fax.PhoneTypeID = 2

    left join phones cFax on cFax.id=cpl_fax.PhoneID

    left join ContactPhoneLink cpl_cell on cpl_cell.ContactID = c.id and cpl_cell.PhoneTypeID = 3

    left join phones cCell on cCell.id=cpl_cell.PhoneID

    left join ContactEmailLink cel on cel.ContactID = c.id

    left join Emails cEmail on cEmail.id = cel.EmailID

    left join ContactWebLink cwl on cwl.ContactID = c.id

    left join WebAddresses wa on wa.id = cwl.WebAddressID

    where cus.id = @customerId

    ',N'@CustomerId int',@CustomerId=1065

    In this query we have seen (on some databases) simply changing ‘@CustomerId int',@CustomerId=1065’ too ‘@customerId int',@customerId=1065’ fixed the a speed problem….just changed the case on the Customer bind parameter. On other servers this has no effect. I’m thinking the server is using an old cached query plan, but don’t know for sure.

  • The query seems to have gone bad again on my machine with or without a capital ‘C’

    I found a way to target and delete specific query plans, but it still is running slow from within .net.

    I am trying to find out why it is slow sometimes and fast at other times, any help would be greatly appreciated.

    Here is what I found

    Find cached plans

    SELECT plan_handle, st.text

    FROM sys.dm_exec_cached_plans

    CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st

    WHERE text LIKE N'%wa.id = cwl.WebAddressID%'

    Remove specific plan

    DBCC FREEPROCCACHE (0x06001E00AC6A672F90961F6C0400000001000000000000000000000000000000000000000000000000000000

  • Please don't start multiple threads for a problem people are already helping you with.

    No replies to this thread please, direct replies to http://www.sqlservercentral.com/Forums/Topic1566066-2799-1.aspx

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • This is the third thread for the same problem.

    Have you done any of the things I've suggested on the other two?

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply