Struktura bazy danych, która może poprawić szybkość zapytań kosztem miejsca na dysku oraz wolniejsze wstawianie / aktualizacje. Przechowuje kopię jednej lub więcej posortowanych kolumn, ale dane są uporządkowane inaczej, aby umożliwić szybszy dostęp.
Używam Postgres 9.3.5 i mam dużą tabelę w bazie danych, obecnie ma ona ponad 25 milionów wierszy i ma tendencję do szybkiego powiększania się. Próbuję wybrać określone wiersze (wszystkie unit_idz najnowszymi unit_timestampdla każdego z nich) za pomocą prostego zapytania, takiego jak: SELECT unit_id, max(unit_timestamp) AS latest_timestamp FROM all_units GROUP BY …
Biorąc pod uwagę tabelę: Column | Type id | integer latitude | numeric(9,6) longitude | numeric(9,6) speed | integer equipment_id | integer created_at | timestamp without time zone Indexes: "geoposition_records_pkey" PRIMARY KEY, btree (id) Tabela zawiera 20 milionów rekordów, co nie jest stosunkowo dużą liczbą. Powoduje to jednak spowolnienie skanowania …
Jak mogę przenieść klastrowany klucz podstawowy do nowej grupy plików? Znalazłem już możliwy „algorytm”, ale jest on okropnie nieefektywny: Usuń indeksowane nieklastrowane (wymaga ich ucieczki i przebudowania) Upuść indeks klastrowy (wymaga zastosowania całej tabeli) Utwórz nowe ograniczenie klucza podstawowego (operacja ogromnego sortowania) Utwórz wszystkie indeksy nieklastrowane (wymagane sortowanie i zapis) …
Mam tabelę z 7,2 milionami krotek, która wygląda następująco: table public.methods column | type | attributes --------+-----------------------+---------------------------------------------------- id | integer | not null DEFAULT nextval('methodkey'::regclass) hash | character varying(32) | not null string | character varying | not null method | character varying | not null file | character varying …
Załóżmy, że masz bazę danych, w której domyślnym współczynnikiem wypełnienia jest 20. Za każdym razem, gdy dane są wstawiane, czy tworzy tylko strony wypełnione do 20%? Z mojego zrozumienia, kiedy dane zostaną wstawione, na stronach będzie około 20% danych. Gdy dane zostaną zaktualizowane, powiększy się do ponad 20% indeksu, wypełniając …
Mam tabelę z dużą ilością wstawek, ustawiając jedno z pól ( uploaded_at) na NULL. Następnie okresowe zadanie wybiera wszystkie krotki WHERE uploaded_at IS NULL, przetwarza je i aktualizuje, ustawiając uploaded_atna bieżącą datę. Jak powinienem indeksować tabelę? Rozumiem, że powinienem użyć częściowego indeksu, takiego jak: CREATE INDEX foo ON table (uploaded_at) …
Muszę odtworzyć indeks w PostgreSQL, który cierpi na wzdęcie indeksu. Ponieważ potrzebuję indeksu, aby był użyteczny podczas tworzenia, nie mogę używać REINDEX. Mam zamiar odtworzyć indeks pod nową nazwą, a następnie upuścić stary. Czy jest jakiś sposób, aby zobaczyć instrukcję SQL, która została użyta do utworzenia indeksu, więc mogę go …
Po odbudowaniu indeksów programu SQL Server za pomocą kompresji strony ( ALTER INDEX IX1 REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)), czy kolejne przebudowy (wykonywane przez niektóre skrypty konserwacji powyżej pewnego progu fragmentacji) muszą ponownie określać kompresję danych? Czy w przeciwnym razie indeksy byłyby skutecznie zdekompresowane?
Utworzyłem następującą tabelę: CREATE TABLE dbo.TestStructure ( id INT NOT NULL, filler1 CHAR(36) NOT NULL, filler2 CHAR(216) NOT NULL ); a następnie utworzył indeks klastrowany: CREATE CLUSTERED INDEX idx_cl_id ON dbo.TestStructure(id); Następnie zapełniłem go 30 wierszami, każdy rozmiar to 256 bajtów (na podstawie deklaracji tabeli): DECLARE @i AS int = …
Mam tabelę programu SQL Server zdefiniowaną w następujący sposób CREATE TABLE [dbo].[Production_Detail] ( [Id] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [dbo].[Production_Detail_Seq]), [Meta_Data_ID] INT NOT NULL , [Production_Detail_Time] DATETIME NOT NULL, [Production_Detail_Time_Local] DATETIME NOT NULL, [Production_Detail_Value] FLOAT NULL, [IntegratedDM] BIT NOT NULL DEFAULT 0, [DailyIntegratedDM] BIT NOT NULL DEFAULT 0, …
Na przykład, jeśli mam dwa indeksy: CREATE INDEX IDX_1 ON MY_TABLE_1 (ITEM, DATE, LOCATION) COMPUTE STATISTICS; CREATE INDEX IDX_2 ON MY_TABLE_1 (DATE, LOCATION, ITEM) COMPUTE STATISTICS; Czy to by stało się IDX_2zbędne? Jeśli nie, jak określić kolejność deklarowania kolumn? Czy powinienem dostosowywać indeksy do regularnych zapytań?
Wiem, jak zrobić klucz podstawowy w tabeli, ale jak zrobić, aby istniejący indeks był kluczem podstawowym? Próbuję skopiować istniejącą tabelę z jednej bazy danych do drugiej. Kiedy pokazuję tabelę, indeks na dole ma następującą postać: "my_index" PRIMARY KEY, btree (column1, column2) Utworzyłem indeks za pomocą: CREATE INDEX my_index ON my_table …
Wiadomo, że DMV nie przechowują dokładnych informacji dotyczących liczby stron i liczby wierszy. Jednak gdy zaktualizujesz statystyki, nie rozumiem, dlaczego by tego nie zrobili. Pracuję nad narzędziem do monitorowania, chcę poznać rozmiar dysku dla każdego indeksu i danych itp. W końcu chciałbym znaleźć odpowiedni współczynnik wypełnienia i inne rzeczy itp. …
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.