Uruchomiłem narzędzie autoindeksowania w naszej bazie danych MS SQL (zmodyfikowałem skrypt pochodzący od Microsoft, który przegląda tabele statystyk indeksów - Automated Auto Indexing ). Ze statystyk mam teraz listę rekomendacji dla indeksów, które wymagają utworzenia. Edycja: Indeksy opisane powyżej pobierają informacje z DMV, które mówią ci, co silnik bazy danych …
Używam PostgreSQL 9.1 na Ubuntu 12.04. Muszę wybrać rekordy w określonym przedziale czasu: moja tabela time_limitsma dwa timestamppola i jedną integerwłaściwość. W mojej rzeczywistej tabeli znajdują się dodatkowe kolumny, które nie są związane z tym zapytaniem. create table ( start_date_time timestamp, end_date_time timestamp, id_phi integer, primary key(start_date_time, end_date_time,id_phi); Ta tabela …
Kiedy tworzysz tabele z wielu sprzężeń do użytku w analizie, kiedy preferowane jest używanie widoków zamiast tworzenia nowej tabeli? Jednym z powodów, dla których wolałbym używać widoków, jest to, że schemat bazy danych został opracowany przez naszego administratora z Rubiego i nie znam go. Mogę zażądać utworzenia tabel, ale wymaga …
Poniżej znajduje się fragment książki o projekcie db (Początkowy projekt bazy danych ISBN: 0-7645-7490-6): Niebezpieczeństwo związane z używaniem widoków polega na filtrowaniu zapytania względem widoku, spodziewając się odczytania bardzo małej części bardzo dużej tabeli. Wszelkie filtrowanie powinno odbywać się w widoku, ponieważ wszelkie filtrowanie względem samego widoku jest stosowane po …
Mam zapytanie podobne do następującego: DELETE FROM tblFEStatsBrowsers WHERE BrowserID NOT IN ( SELECT DISTINCT BrowserID FROM tblFEStatsPaperHits WITH (NOLOCK) WHERE BrowserID IS NOT NULL ) tblFEStatsBrowsers ma 553 wierszy. tblFEStatsPaperHits ma 47.974.301 wierszy. tblFEStatsBrowsers: CREATE TABLE [dbo].[tblFEStatsBrowsers]( [BrowserID] [smallint] IDENTITY(1,1) NOT NULL, [Browser] [varchar](50) NOT NULL, [Name] [varchar](40) NOT …
W przypadku średnio złożonego zapytania, które próbuję zoptymalizować, zauważyłem, że usunięcie TOP nklauzuli zmienia plan wykonania. Zgadłbym, że gdy zapytanie zawiera TOP nsilnik bazy danych, uruchomiłoby zapytanie ignorując TOPklauzulę, a następnie na koniec zmniejszyłem zestaw wyników do n żądanej liczby wierszy. Graficzny plan wykonania wydaje się wskazywać, że tak jest …
Zwrócono mi uwagę, że USINGkonstrukcja (zamiast ON) w FROMklauzuli SELECTzapytań może w niektórych przypadkach wprowadzić bariery optymalizacyjne. Mam na myśli to słowo kluczowe: WYBIERZ * Od Dołącz b UŻYCIEM (a_id) Tylko w bardziej skomplikowanych przypadkach. Kontekst: ten komentarz do tego pytania . Używam tego bardzo często i jak dotąd niczego …
Przeanalizujmy te dwa stwierdzenia: IF (CONDITION 1) OR (CONDITION 2) ... IF (CONDITION 3) AND (CONDITION 4) ... Jeśli CONDITION 1tak TRUE, zostanie CONDITION 2sprawdzone? Jeśli CONDITION 3tak FALSE, zostanie CONDITION 4sprawdzone? Co z warunkami na WHERE: czy silnik SQL Server optymalizuje wszystkie warunki w WHEREklauzuli? Czy programiści powinni umieszczać …
To zapytanie zawiera listę postów utworzonych przez osoby, które obserwujesz. Możesz śledzić nieograniczoną liczbę osób, ale większość osób śledzi <1000 innych. Przy takim stylu zapytań oczywistą optymalizacją byłoby buforowanie "Post"identyfikatorów, ale niestety nie mam teraz na to czasu. EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER …
W poniższych zapytaniach szacuje się, że oba plany wykonania wykonają 1000 wyszukiwań na unikalnym indeksie. Poszukiwania są sterowane przez uporządkowane skanowanie w tej samej tabeli źródłowej, więc najwyraźniej powinno się kończyć szukanie tych samych wartości w tej samej kolejności. Obie zagnieżdżone pętle mają <NestedLoops Optimized="false" WithOrderedPrefetch="true"> Czy ktoś wie, dlaczego …
Natknąłem się na kilka SELECT DISTINCT TOP Nzapytań, które wydają się być słabo zoptymalizowane przez optymalizator zapytań SQL Server. Zacznijmy od trywialnego przykładu: tabela z milionami wierszy z dwiema naprzemiennymi wartościami. Użyję GetNums funkcji do generowania danych: DROP TABLE IF EXISTS X_2_DISTINCT_VALUES; CREATE TABLE X_2_DISTINCT_VALUES (PK INT IDENTITY (1, 1), …
Napotkaliśmy ciekawy problem z programem SQL Server. Rozważ następujący przykład repro: CREATE TABLE #test (s_guid uniqueidentifier PRIMARY KEY); INSERT INTO #test (s_guid) VALUES ('7E28EFF8-A80A-45E4-BFE0-C13989D69618'); SELECT s_guid FROM #test WHERE s_guid = '7E28EFF8-A80A-45E4-BFE0-C13989D69618' AND s_guid <> NEWID(); DROP TABLE #test; skrzypce Proszę na chwilę zapomnieć, że s_guid <> NEWID()warunek wydaje się …
Miałem wrażenie, że podczas korzystania z LIKEoperatora we wszystkich optymalizacjach dla nieznanych scenariuszy zarówno starsze, jak i nowe CE używają szacunku 9% (zakładając, że odpowiednie statystyki są dostępne, a optymalizator zapytań nie musi uciekać się do domysłów selektywności). Podczas wykonywania poniższego zapytania względem bazy danych kredytów otrzymuję różne szacunki w …
Zadaję to pytanie, aby lepiej zrozumieć zachowanie optymalizatora i zrozumieć ograniczenia wokół buforów indeksu. Załóżmy, że umieściłem na stercie liczby całkowite od 1 do 10000: CREATE TABLE X_10000 (ID INT NOT NULL); truncate table X_10000; INSERT INTO X_10000 WITH (TABLOCK) SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM …
Widzę częste odniesienia do WITHzapytań (wspólne wyrażenia tabelowe lub CTE), które działają jak płot optymalizacyjny, w którym serwer nie może wypychać filtrów w dół do zapytań CTE, wyciągać typowe wyrażenia z CTE itp. być zachowaniem wymaganym przez standardy SQL. CTE są zdecydowanie ogrodzeniem optymalizacyjnym w PostgreSQL ... ale czy jest …
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.