Hvad betyder ' busborde ' betyder?


Bedste svar

Bussning af borde er et job i en restaurant. Det betyder at rense bordet mellem kunderne. Dette inkluderer at fjerne alle snavsede eller brugte genstande (fade, sølvtøj, servietter) og derefter tørre af bordet.

Den traditionelle jobtitel for dette er “busboy”, men ikke alle, der gør dette job, er en dreng . Der kan være et mere kønsneutralt udtryk for det nu.

Svar

I det scenarie, du beskriver, angiver du, at de mest anvendte felter i tabellen er den primære nøgle (CompanyId ), et enkelt datafelt (CompanyName) og en fremmed nøgle (IndustryId). Hvis der er indekser på disse felter, hvilket er garanteret for den primære nøgle og yderst sandsynligt for den udenlandske nøgle, da ellers ville din databaseydelse suge, så vil forespørgsler, der kun henviser til disse felter, i mange tilfælde være tilfredse = “635decbf9a”>

helt fra indekserne . Selve databasesiderne læses ikke. Du kan kontrollere dette selv ved at anmode om en plan for udførelse af forespørgsler fra forespørgselsanalysatoren. Hvis eksekveringsplanen bruger en “indeks-søgning” eller “indeks-spool”, bruger den et indeks til at oprette forespørgselsresultaterne. Hvis det primære nøgleindeks er grupperet, er situationen noget anderledes, men jeg overlader det til dig til at undersøge, hvad et klynget indeks er i SQL Server, og hvordan det ændrer den måde, databasen er lagret på og adgang til. Generelt, hvis SQL Server kan konstruere et resultatsæt ved hjælp af data fra et indeks, vil det gøre det i stedet for at bruge databasetabelsiderne, fordi det betyder at læse færre data. Et indeks er struktureret identisk med en tabel, bortset fra at det kun har de kolonner, der er angivet i indekset, plus et rækkefindingsfelt, der er en markør, hvor rækken er gemt; pointeren (24 byte) er typisk mindre end selve ræddataene, og derfor vil næsten altid flere indeks-tabelrækker end tabelrækker passe ind i en databaseside.

Databasesidestørrelsen i SQL Server er fastsat til 8192 bytes. 96 bytes på siden bruges til et overskrift; dette plus andre overhead efterlader en maksimal række størrelse på 8060 bytes. SQL Server 2008 tillader imidlertid varchar-, nvarchar-, varbinary- og sql\_variant-kolonner at overskride denne grænse og vil flytte disse felter til at overløbe sider, når deres inkludering i en række vil medføre, at en række overskrider denne rækkestørrelsesgrænse. Også tekst, ntext, image, nvarchar (max), varchar (max), varbinary (max) og xml kolonner er altid gemt på separate sider, uanset hvor meget data der faktisk er gemt i kolonnen. Tabeldefinitionen, som du har indsendt, viser de samlede kolonnebredder, der langt overstiger 8060 byte-grænsen, men det meste af dette er i varchar (n) -felter, så du ender med sider med rækkeoverløb for rækker, hvor den faktiske størrelse af variablen bredde søjler er tilstrækkelig store. Antallet af sider, som en række vil bruge i denne tabel, vil derfor variere afhængigt af, hvor længe de data, der faktisk er gemt i kolonnerne med variabel bredde, er for hver række.

Med hensyn til forbedring af ydeevne, hvis du kun har et par felter, der ofte bruges, kan du sandsynligvis få så meget forbedring blot ved at sikre, at felter og kombinationer af felter, som du ofte bruger, er tilgængelige som indekser. Dette betyder, at de fleste rækkesæt kan udfyldes fra indeksdata i stedet for tabeldata, hvilket undgår problemer med at indlæse store rækker fra databasen. Bedst af alt, dette kan gøres helt på DBA-niveau; applikationen behøver ikke at blive omskrevet for at afspejle ændringen i skemaet forårsaget af tilføjelse (eller fjernelse) af indekser. Og selvfølgelig skal enhver kolonne, som du bruger som en del af en sammenføjning, indekseres; ellers vil du gøre tabel scanner efter de sammenføjninger, som faktisk er ret langsomme.

Jeg kan foreslå, at du overvejer ntext i stedet for store nvarchar-felter for nogle af de større felter, selvom dette kan kræve ændringer i applikationskode, fordi semantikken i tekst / ntekst adskiller sig fra varchar / nvarchar. Tekst / ntekstkolonner er altid gemt på LOB-sider i stedet for betinget lagret på rækken dataside, og hvis disse kolonner ofte er til stede og af moderat størrelse (siger , 1000-2000 byte), når du gemmer dem som tekst / ntekst, bliver resten af ​​rækken datasider mindre og muligvis muliggør flere rækker pr. Side, hvilket vil fremskynde tabel-scanninger, der faktisk ikke behøver at henvise til disse kolonner. p>

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *