varje kund/ användare vill alltid ha ett snabbt svar på sin datahämtningsprocess. Så vi måste utforma en bra databas som ger bästa prestanda under datamanipulation vilket resulterar i bästa prestanda för en applikation. Det finns dock inget enkelt sätt att definiera bästa prestanda, men vi kan välja flera sätt att förbättra SQL-frågeprestanda, som faller under olika kategorier som skapande av index, användning av kopplingar och skriva om en underfråga för att använda JOIN etc.
som utvecklare vet vi att alla SQL-frågor kan skrivas på flera sätt, men vi bör följa bästa praxis/ tekniker för att uppnå bättre frågeprestanda. Jag markerar några av dem nedan:
1. Användning existerar istället för IN för att kontrollera förekomsten av data.
2. Undvik * I SELECT-satsen. Ange namnet på kolumner som du behöver.
3. Välj lämplig datatyp. T. ex. för att lagra strängar använder varchar i stället för textdatatyp. Använd textdatatyp, när du behöver lagra stora data (mer än 8000 tecken).
4. Undvik nchar och nvarchar om möjligt eftersom båda datatyperna bara tar dubbelt minne som char och Varchar.
5. Undvik NULL i fast längd fält. Vid krav på NULL, använd variabel längd (varchar) fält som tar mindre plats för NULL.
6. Undvik Att Ha Klausul. Att ha klausul krävs om du ytterligare vill filtrera resultatet av en aggregering.
7. Skapa grupperade och icke-grupperade index.
8. Håll grupperat index litet eftersom fälten som används i grupperat index också kan användas i icke-grupperat index.
9. De flesta selektiva kolumner ska placeras längst till vänster i nyckeln till ett icke-grupperat index.
10. Släpp oanvända index.
11. Bättre att skapa index på kolumner som har heltalsvärden istället för tecken. Heltalsvärden använder mindre overhead än teckenvärden.
12. Använd kopplingar istället för underfrågor.
13. Använd WHERE-uttryck för att begränsa storleken på resultattabeller som skapas med kopplingar.
14. Använd TABLOCKX medan du sätter in i ett bord och TABLOCK medan du slår samman.
15. Använd med (NOLOCK) medan du frågar data från vilken tabell som helst.
16. Använd SET NOCOUNT på och använd TRY-CATCH för att undvika dödläge.
17. Undvik markörer eftersom markören är mycket långsam i prestanda.
18. Använd tabell variabel i stället för Temp tabell. Användning av Temp tabeller krävs interaktion med TempDb databas som är en tid tar uppgift.
19. Använd unionen i stället för unionen om möjligt.
20. Använd schemanamn före SQL-objektsnamn.
21. Använd lagrad procedur för ofta använda data och mer komplexa frågor.
22. Håll transaktionen så liten som möjligt eftersom transaktionen låser databehandlingstabellerna och kan resultera i deadlocks.
23. Undvik prefixet ” sp_ ” med användardefinierat lagrat procedurnamn eftersom SQL server först söker i den användardefinierade proceduren i huvuddatabasen och därefter i den aktuella sessionsdatabasen.
24. Undvik användning av icke-korrelerad skalär Sub fråga. Använd den här frågan som en separat fråga istället för en del av huvudfrågan och lagra utdata i en variabel, som kan hänvisas till i huvudfrågan eller senare en del av batchen.
25. Undvik Multi-uttalande tabell värderade funktioner (TVFs). Multi-uttalande TVFs är dyrare än inline TVFs.
Lyckligt Lärande!