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

Skadelige, gennemgående SQL Server-ydeevnemyter

Mellem mine rejser, præsentationer og Q &A-moderering taler jeg med en masse mennesker om en lang række forskellige SQL Server-ydelsesproblemer. For nylig har jeg haft et par interaktioner, hvor folk tror på ting, der enten er helt forkerte eller kun er korrekte i et meget snævert sæt brugssager. Alligevel er deres overbevisning om, at disse ting er universelt sande, foruroligende.

Så jeg tænkte, at jeg ville starte en ny serie for at hjælpe med at dæmme nogle af disse myter. Ikke for at pege på folk og bevise, at de tager fejl, men for at stoppe spredningen. Når de kommer med disse generelle udtalelser på deres arbejdsplads, eller på Twitter eller i fora, hvis de ikke er markeret, kan de "undervise" påvirkelige eller mindre erfarne brugere.

Bemærk, at jeg ikke har til hensigt at bevise, at disse ting er aldrig sandt, fordi nogle helt sikkert kan være sande i isolerede eller konstruerede scenarier . Mit mål er simpelthen at demonstrere mindst ét ​​tilfælde, hvor det ikke er sandt; forhåbentlig kan dette begynde at ændre disse stædige tankegange.

Her er nogle af de "fakta" jeg har fået at vide for nylig, uden nogen særlig rækkefølge:

  • "Et klynget indeks er altid bedre end et ikke-klynget indeks"
  • "Dynamisk SQL gjorde min forespørgsel langsom"
  • "PIVOT er hurtigere end SUM(CASE)"
  • "NULLs forårsager altid frygtelige problemer med ydeevnen"
  • "Udførelsesplaner er ubrugelige bortset fra manglende indekser"
  • "NOLOCK er okay, fordi mange mennesker bruger det"
  • "Overstørrelse af varchar/nvarchar-kolonner er okay"

Mens jeg skriver hvert indlæg, opdaterer jeg denne side ved at linke til det tilsvarende element på listen ovenfor.

Har du nogen præstationsmyter, der videregives som absolutte fakta, men du har mistanke om (eller måske endda ved), at de ikke altid er sande? Fortæl mig det i kommentarerne nedenfor, på twitter eller på [email protected].


  1. Hvad er forskellen mellem Non-Repeatable Read og Phantom Read?

  2. Hvordan afbrydes INSERT operation i MySql trigger?

  3. hvordan man erklærer global variabel i SQL Server ..?

  4. Kan PostgreSQL have en unikhedsbegrænsning på array-elementer?