sql >> Databasteknik >  >> RDS >> Sqlserver

Skadliga, genomgripande SQL Server-prestandamyter

Mellan mina resor, presentationer och Frågor &Svar-moderering pratar jag med många människor om en mängd olika SQL Server-prestandaproblem. Nyligen har jag haft några interaktioner där människor tror på saker som antingen är helt felaktiga eller bara är korrekta i en mycket snäv uppsättning användningsfall. Ändå är deras övertygelse om att dessa saker är universella sanna oroande.

Så jag tänkte att jag skulle starta en ny serie för att hjälpa till att slå ner några av dessa myter. Inte för att peka på folk och bevisa att de har fel, utan för att stoppa spridningen. När de gör dessa allmänna uttalanden på sin arbetsplats, eller på twitter eller i forum, om de inte är markerade, kan de "lära" lättpåverkade eller mindre erfarna användare.

Observera att jag inte har för avsikt att bevisa att dessa saker är aldrig sant, för vissa kan säkert vara sanna i isolerade eller konstruerade scenarier . Mitt mål är helt enkelt att visa åtminstone ett fall där det inte är sant; förhoppningsvis kan detta börja förändra dessa envisa tänkesätt.

Här är några av de "fakta" jag har fått höra nyligen, utan någon speciell ordning:

  • "Ett klustrat index är alltid bättre än ett icke-klustrat index"
  • "Dynamisk SQL gjorde min fråga långsam"
  • "PIVOT är snabbare än SUM(CASE)"
  • "NULL orsakar alltid hemska prestandaproblem"
  • "Exekveringsplaner är värdelösa förutom saknade index"
  • "NOLOCK är okej eftersom många använder det"
  • "Överstoring av varchar/nvarchar-kolumner är okej"

När jag skriver varje inlägg kommer jag att uppdatera den här sidan genom att länka till motsvarande objekt i listan ovan.

Har du några prestationsmyter som förmedlas som ett absolut faktum, men du misstänker (eller kanske till och med vet) att de inte alltid är sanna? Låt mig veta i kommentarerna nedan, på twitter eller på [email protected].


  1. Hur hämtar jag mitt MySQL-användarnamn och lösenord?

  2. hur man ändrar storleken på en kolumn

  3. Guide för att designa databas för anställdas ledningssystem i MySQL

  4. Hur kan jag ändra befintlig kolumn som identitet i PostgreSQL 11.1