sql >> Database teknologi >  >> RDS >> Sqlserver

SQL dårlig ydelse af plan for udførelse af lagrede procedurer - parametersniffing

Grundlæggende ja - parametersniffing (i nogle patch-niveauer af) SQL Server 2005 er dårligt ødelagt. Jeg har set planer, der faktisk aldrig fuldføres (inden for få timer på et lille datasæt) selv for små (få tusinde rækker) datasæt, som afsluttes på få sekunder, når parametrene er maskeret. Og det er i tilfælde, hvor parameteren altid har været det samme tal. Jeg vil tilføje, at på samme tid, som jeg beskæftigede mig med dette, fandt jeg en masse problemer med, at LEFT JOIN/NULLs ikke blev fuldført, og jeg erstattede dem med NOT IN or NOT EXISTS, og dette løste planen til noget, der ville fuldføre. Igen, et (meget dårligt) spørgsmål om udførelsesplan. På det tidspunkt, jeg beskæftigede mig med dette, ville DBA'erne ikke give mig SHOWPLAN-adgang, og siden jeg begyndte at maskere hver SP-parameter, har jeg ikke haft yderligere problemer med eksekveringsplanen, hvor jeg skulle grave ind i dette for ikke-fuldførelse .

I SQL Server 2008 kan du bruge OPTIMIZE FOR UNKNOWN .



  1. Sådan bruger du GO Statement i SQL Server til at indsætte poster i Identity Column - SQL Server / T-SQL Tutorial Del 42

  2. Sådan aktiverer du alle kontrolbegrænsninger i SQL Server-databasen - SQL Server / TSQL vejledning del 88

  3. 5 tips til at styre dine teams, mens du er på afstand

  4. Sådan genforespørger du automatisk med LoaderManager