2009-12-18 13 views
8

Mam zapytanie, które tworzy kilka tymczasowych tabel, a następnie wstawia do nich dane. Z tego co rozumiem, jest to potencjalna przyczyna buforu stołowego. Kiedy patrzę na mój plan wykonania, większość mojego przetwarzania spędzam na buforze stołowym. Czy istnieją dobre techniki pozwalające poprawić te problemy z wydajnością? Czy użycie widoku lub CTE da mi jakieś korzyści w stosunku do tabel tymczasowych?Pozbywanie się bufora tabeli w SQL Server Plan wykonania

Zauważyłem również, że po przesuwaniu wskaźnika myszy nad każdą kolejną tabelą lista wyników pochodzi z tej samej tabeli tymczasowej.

Odpowiedz

15

Cóż, dzięki podanym informacjom mogę powiedzieć tylko tyle: optymalizator zapytań wybrał najlepszy możliwy plan. Wykorzystuje szpule stołowe do przyspieszenia wykonania. Alternatywy, które nie używają buforów tabel, będą wolniejsze.

Co powiesz na wyświetlenie zapytania, schemat (schematy) tabeli i liczność oraz plan.

Aktualizacja

pewno zrozumieć, jeśli nie można pokazać nam zapytanie. Trudno jednak domyślić się, dlaczego mechanizm buforowania jest preferowany przez silnik, który nie zna żadnych szczegółów. Polecam przejrzeć blog Craig Freedman, jest inżynierem w zespole optymalizującym zapytania i wyjaśnił wiele wewnętrznych działań optymalizatora SQL 2005/2008. Oto niektóre wpisy mogę szybko okaże się, że dotyka tematu buforowania w takiej czy innej formie:

SQL zespół obsługi klienta jest również ciekawy blog pod adresem http://blogs.msdn.com/psssql/
I "sqltips" (blog zespołu relacyjnego silnika) ma kilka wskazówek, takich jak Spool operators in query plan...

+0

Niestety myślę, że moja praca nie chciałaby, żebym podzielał tego rodzaju informacje. Moje rozumienie buforowania jest ograniczone, ale pomyślałem, że buforowanie zostało użyte, kiedy odwołujesz się do tymczasowego stołu. Czy umieszczenie tych informacji w indeksowanym widoku nie oddaliłoby nas od tego bez negatywnego wpływu na wydajność? –

Powiązane problemy