1. Jeśli to możliwe, nie używaj kursora. Kursory są z reguły mniej wydajne i potrzebują więcej zasobów w porównaniu rozwiązaniami opartymi na klauzuli SELECT. 2. Zawsze zamykaj kursor, kiedy nie potrzebujesz już jego zbioru wynikowego. Służy do tego instrukcja CLOSE. Instrukcja ta zwalnia zbiór wynikowy kursora i blokady na jego wierszach. Powiązanie ze strukturą danych pozostaje aktywne i można ponownie otworzyć kursor instrukcją OPEN. 3. Zawsze zwalniaj kursor, kiedy go już nie potrzebujesz. Służy do tego instrukcja DEALLOCATE. Instrukcja ta zwalnia zasoby kursora, strukturę danych i wszystkie blokady związane z kursorem. 4. Ograniczaj do minimum liczbę wierszy i kolumn kursora. W klauzuli SELECT definiującej kursor wybieraj tylko te kolumny i wiersze, których rzeczywiście potrzebujesz. W większości przypadków zwiększy to wydajność kursora i zmniejszy ogólne koszty (SQL Server overhead). 5. Jeśli to możliwe, używaj kursorów z opcją READ ONLY. Użycie opcji READ ONLY nie pozwala na aktualizowanie powiązanego z kursorem zbioru wynikowego, ale dzięki temu nie ma na nim blokad. 6. Jeśli to możliwe, unikaj używania opcji INSENSITIVE, STATIC, KEYSET. Kursory o tych typach są z reguły bardziej kosztowne, bo powodują utworzenie tabeli tymczasowej w bazie TEMPDB, co może skutkować spadkiem wydajności. 7. Jeśli to możliwe, używaj opcji FAST_FORWARD. Ten typ kursorów produkuje najmniej kosztów ogólnych w SQL Server, bo jest tylko do odczytu i może być przewijany tylko w jednym kierunku. Trzeba pamiętać, że przy tej opcji to optymizator wybiera, czy kursor będzie statyczny, czy dynamiczny. 8. Jeśli to możliwe, w edytowalnych kursorach używaj opcji FORWARD_ONLY. Ograniczenie kierunku pobierania powoduje mniejsze zużycie zasobów. Zawsze używaj tej opcji, jeśli do pobierania danych używasz tylko FETCH NEXT, a nie użyłeś opcji FAST_FORWARD.