A hatékonyság növelése használata révén optimalizáló tanácsok

Egy csipetnyi Index

Tipp optimalizáló, hogy egy meghatározott index akkor hasznos, ha azt szeretné, hogy az SQL Server, hogy ezt a kódot, és ha ezzel index növeli a hatékonyságot a lekérdezés. Használja ezt a célzást a legjobb, ha pontosan tudja, mit SQL Server nem választani az optimális index a lekérdezés, és meg kell segíteni kiválasztani a megfelelő SQL Server index. Hinte kell adnia az id az index vagy nevét. Az alábbiakban egy példa a lekérdezésre, amely helyettesített egy az index ID:

A id 0 fogja kényszeríteni az SQL Server használata fürtözött index scan, ha létezik. Ha a fürtözött index nem, akkor egy táblázat vizsgálat kerül végrehajtásra. Itt egy példa lekérdezést, amely egy index helyett az id neve:

Útmutatás érdekében kombináljuk

Az, hogy a összefűzése az SQL Server egyes asztal a FROM záradék, egy nagyon erős befolyása hogyan kerül végrehajtásra a lekérdezés vagy tárolt eljárás. Összefogás táblázatok rossz sorrendben jelentősen növeli a teljesítményt a lekérdezést. Ha úgy gondolja, hogy az SQL Server nem választotta az optimális csatlakozzon ahhoz az asztal, meg kell találni a legjobb csatlakozzanak érdekében, és adja meg a célzást. Mert az alább felsorolt ​​két kis példa hasznos lesz, hogy fontolja terveket a kivitelezés, ami látja a rendelést táblázat csatlakozik, az SQL szerver kiválasztott mindkét esetben. Láthatjuk a tervek Query Analyzer vagy kattintson a megfelelő linkre ebben a szakaszban. Az első lekérdezés megmutatja, mi történik, ha a táblázat egyesítjük nem optimális.

Most végre egy második kérelmet (ami ugyanaz lekérdezésre, de anélkül, hogy a hint).

Amikor a célzást kivesszük a lekérdezés összekötő táblázatok végeznek más sorrendben. Az eljárás, amely az SQL Server nélkül a célzást, jobb lesz. Úgy kezdődik a titleauthor tábla, ami kombinálva van a címek asztalra. Ezt követi a társulás az asztal eredménye egyesületek roysched másik két asztal.
Egy gyors módja annak, hogy mi a fentiek közül bármelyik lekérdezések gyorsabb, a végrehajtás mindkettőjük az egyik ablakban, a Query Analyzer, és együttes figyelembe vétele teljesítményük terveket. Tehát láthatjuk, hogy miért a második lekérdezés gyorsabb, mint az első.
Kattints erre a linkre: terv végrehajtása az első kérelem
Kattints erre a linkre: terv végrehajtása a második kérelem
Mint látható, az első lekérdezés csatlakozzon a táblázatok címében és roysched olyan eredményt ad, 86 bejegyzéseket. Ezek a 86 terméket használjuk a következő beágyazott hurok, hogy csatlakozzanak. Itt van 123 bejegyzés teszik ki a reprezentált eredmény irányítja. A második lekérdezés, a titleauthor és címeket ad első táblákat már eredményeként 25 bejegyzéseket. Továbbá, nincs közbenső lépéseket való kombinálás előtt a harmadik táblázat 25 bejegyzéseket, majd egy így kapott sor 123 bejegyzés.
A második lekérdezés végre gyorsan, mert van foglalkozni kevesebb szálakat. A sorok száma, amelyek részt vettek, nagyban függ a rendelést egyesület táblázatok együtt. Ez azt bizonyítja, hogy milyen fontos a rend táblázatok csatlakozott. SQL Server véli sok tényező befolyásolja az egyesület, mielőtt meghatározni, hogy mi a legjobb eljárás alkalmazását, amikor csatlakozott táblázatokat. Ez általában: a sorok számát a táblázatban, elsődleges kulcsok, indexek, a processzorok számát és az aktuális terhelés a szerveren, és néha ezek közül csak néhány tényező. Ha az SQL Server hirtelen tegye az asztalra a csatlakozzon a rossz sorrendben, próbálja megoldani a problémát meghatározásával optimálisabb sorrendben tippet az egyesület.

Tipp NOLOCK asztalok

Javaslat (NOLOCK) mindig helyezzük közvetlenül a tábla nevét, vagy saját álnevet.
Kérelmet nyújtottak be az alábbiakban mutatja be, hogyan lehet kiválasztani az adatokat anélkül, hogy a célzást NOLOCK és tekintse meg az adatokat, mielőtt rögzíti segítségével a célzást NOLOCK. Végezze el a következő lekérdezést egy külön ablakban, a Query Analyzer:

Ez a lekérdezés beállított kizárólagos zár a címek asztalra, mert mi lesz, nem lehet elvégezni változások egész addig, amíg a parancs végrehajtásakor transzferrekordot. Most egy másik ablakban, a Query Analyzer, csatlakozik ugyanazon a szerveren, futtassa a következő lekérdezést:

Ne habozzon, hogy szakítsa meg a végrehajtás ezen lekérdezés, ha elfárad a várakozás az eredményt. Soha nem lesz, amíg be nem zárja a másik ablakban vagy teljes módosításának parancs tranzakciót. SQL Server nem teszi lehetővé, hogy az adatokat, amíg a művelet befejeződik, vagy nem gurul vissza, mert a kizárólagos zár nyújtják alapértelmezés szerint. Hogy ezt elkerüld, akkor módosítsa a lekérdezést, hogy a következőképpen néz ki:

Segítségével tippeket a lekérdezéseket, hogy van értelme, ha csak azért, hogy a Microsoft a felhasználásuk a választási lehetőségeket SQL Server. Azonban, a használata a legtöbb tippeket kell korlátozni, kivéve, hogy a célzást, hogy leírt a harmadik példában. Próbál javítani a hatékonyságot a hint csak akkor, ha nem talált más megoldást.