hver kunde/ bruger ønsker altid et hurtigt svar på deres datahentningsproces. Så vi er nødt til at designe en god database, der giver den bedste ydelse under datamanipulation, hvilket resulterer i den bedste ydelse af en applikation. Der er dog ingen enkel måde at definere den bedste ydelse på, men vi kan vælge flere måder at forbedre ydelsen på forespørgsel, som falder ind under forskellige kategorier som oprettelse af indekser, brug af joinforbindelser og omskrive en underforespørgsel, der skal bruges JOIN osv.
som udvikler ved vi, at enhver forespørgsel kan skrives på flere måder, men vi bør følge bedste praksis/ teknikker for at opnå bedre forespørgselsydelse. Jeg fremhæver nogle af dem nedenfor:
1. Brug findes i stedet for at kontrollere eksistensen af data.
2. Undgå * i SELECT-sætningen. Angiv navnet på kolonner, som du har brug for.
3. Vælg passende datatype. For at gemme strenge skal du bruge varchar i stedet for tekstdatatype. Brug tekst datatype, når du har brug for at gemme store data (mere end 8000 tegn).
4. Undgå nchar og nvarchar, hvis det er muligt, da begge datatyper kun tager dobbelt hukommelse som char og varchar.
5. Undgå NULL i fast længde felt. I tilfælde af krav om NULL, brug variabel længde (varchar) felt, der tager mindre plads til NULL.
6. Undgå Klausuler. At have klausul er påkrævet, hvis du yderligere ønsker at filtrere resultatet af en aggregering.
7. Opret grupperede og ikke-grupperede indekser.
8. Hold grupperet indeks lille, da de felter, der bruges i grupperet indeks, også kan bruges i ikke-grupperet indeks.
9. De fleste selektive kolonner skal placeres længst til venstre i nøglen til et ikke-grupperet indeks.
10. Drop ubrugte indekser.
11. Bedre at oprette indekser på kolonner, der har heltalsværdier i stedet for tegn. Heltalsværdier bruger mindre overhead end tegnværdier.
12. Brug joinforbindelser i stedet for underforespørgsler.
13. Brug hvor udtryk til at begrænse størrelsen på resultattabeller, der oprettes med joinforbindelser.
14. Brug TABLOCK, mens du indsætter i et bord og TABLOCK, mens du fusionerer.
15. Brug med (NOLOCK), mens du spørger dataene fra en hvilken som helst tabel.
16. Brug sæt NOCOUNT ON og brug TRY-CATCH for at undgå dødvande tilstand.
17. Undgå markører, da markøren er meget langsom i ydeevne.
18. Brug Tabelvariabel i stedet for Temp tabel. Brug af Temp tabeller krævede interaktion med TempDb database, som er en tid tager opgave.
19. Brug UNION alt i stedet for UNION, hvis det er muligt.
20. Brug Skemanavn før navn på objekter.
21. Brug lagrede Procedure for ofte anvendte data og mere komplekse forespørgsler.
22. Hold transaktionen så lille som muligt, da transaktionen låser behandlingstabellens data og kan resultere i deadlocks.
23. Undgå præfiks ” sp_ ” med brugerdefineret gemt procedurenavn, fordi vi først søger efter den brugerdefinerede procedure i masterdatabasen og derefter i den aktuelle sessionsdatabase.
24. Undgå brug af ikke-korreleret skalar Sub forespørgsel. Brug denne forespørgsel som en separat forespørgsel i stedet for en del af hovedforespørgslen, og gem output i en variabel, som kan henvises til i hovedforespørgslen eller senere del af batchen.
25. Undgå Multi-statement tabel værdsatte funktioner (TVFs). Multi-statement TVF ‘er er dyrere end inline TVF’ er.
Glad Læring!