Poniższe sprzężenie ma bardzo różne szacunki wierszy podczas wykonywania łączenia na partycjach w porównaniu do łączenia całej tabeli: CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system …
Konwersja zwykłej kolumny na utrwaloną kolumnę obliczeniową powoduje, że to zapytanie nie może wyszukiwać indeksu. Dlaczego? Testowane na kilku wersjach SQL Server, w tym 2016 SP1 CU1. Repros Z kolumną obliczeniową Ze zwykłą kolumną Problem polega na tym table1, że col7. Tabele i zapytania są częściową (i uproszczoną) wersją oryginałów. …
Wiem, że jeśli chodzi o użycie indeksu lub skanowania tabeli, SQL Server używa statystyk, aby zobaczyć, który jest lepszy. Mam stół z 20 milionami wierszy. Mam indeks na (SnapshotKey, Measure) i to zapytanie: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group by Measure, SnapshotKey, MeasureBand Kwerenda zwraca …
Po chwili poszukiwań postanowiłem opublikować to pytanie z powodu braku odpowiedzi i przepraszam, jeśli istnieje podobne pytanie / odpowiedź. Podczas uruchamiania poniższego zapytania na dwóch podobnie skonfigurowanych serwerach SQL napotykamy różne plany wykonania, które wpływają na wydajność i potrzebujemy pomocy w ustaleniu przyczyny. Zapytanie: SELECT process_id INTO #temp FROM revrep_revenue_fact …
W SQL Server 2012 mam funkcję wycenianą tabelą z dołączeniem do innej tabeli muszę policzyć liczbę wierszy dla tej „funkcji wycenianej tabelą”. Kiedy sprawdzam plan wykonania, widzę lewą tabelę łączenia. Dlaczego? Jak lewy połączony stół może wpływać na liczbę zwracanych wierszy? Spodziewałbym się, że silnik db nie musi oceniać lewej …
Mam dziwną sytuację. Za pomocą sp_whoisactiveWidzę to: Ok, dzięki temu zapytaniu widzę, co się uruchamia (czy to słowo istnieje w języku angielskim?) To: SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t wynik: to jest proste select. Dlaczego używasz …
Po uruchomieniu tego usuwania: DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870 ... usuwa 39 157 wierszy. Powinno być proste, ponieważ usuwa się na ETLHeaderID, który jest indeksem klastrowym i kluczem podstawowym. Ale (zgodnie z planem wykonania) wydaje się, że uderza w 361 190 wierszy i używa innych indeksów. Tabela ma …
Mam takie zapytanie: select dbo.fn_complexFunction(t.id) from mytable t W SQL Sentry Plan Explorer zauważyłem, że muszę uruchomić Get Estimated Plan, aby Plan zapytań zawierał UDF. Po uruchomieniu polecenia „Pobierz aktualny plan” nie wydaje się, aby odczyty logiczne i inne metryki obejmowały operacje występujące w UDF. W takich przypadkach, czy jedynym …
Mam schemat z wieloma widokami. Muszę sprawdzić plany wykonania, aby upewnić się, że odpowiednie indeksy są na miejscu i są używane. Jak mam to zrobic? Wolałbym nie kopiować i wklejać danych wyjściowych show create view <viewname>do explain, zwłaszcza, że niektóre widoki są zbudowane na innych widokach, co byłoby dość uciążliwe.
Mam instrukcja usuwania, która używa złego planu, gdy jest uruchamiana w ramach procedury składowanej, ale wybiera znacznie lepszy plan, gdy jest uruchamiany ad-hoc. Odbudowałem wszystkie indeksy dla tabel używanych w zapytaniu i usunąłem wszystkie pamięci podręczne. Optymalizator nadal wybiera zły plan dla procedury składowanej. Chciałbym wiedzieć, dlaczego optymalizator korzysta z …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.