Podczas profilowania bazy danych natknąłem się na widok odwołujący się do niektórych niedeterministycznych funkcji, do których dostęp uzyskuje się 1000–2500 razy na minutę dla każdego połączenia w puli tej aplikacji. Prosty SELECTz widoku daje następujący plan wykonania: To wydaje się być złożonym planem dla widoku, który ma mniej niż tysiąc …
To proste pytanie, na które nie mogę znaleźć odpowiedzi. Jeśli chodzi o wydajność, jeśli mam WHEREklauzulę, na przykład: a=0 and b=0 and ... z=0Czy uzyskałbym jakąkolwiek wydajność, jeśli zastąpiłbym ten warunek a+b+...+z=0? Innymi słowy, czy jest jakikolwiek wzrost wydajności poprzez zastąpienie następujących Select * From MyTable Where A=0 and B=0 …
Napisałem aplikację z zapleczem SQL Server, która gromadzi i przechowuje oraz bardzo dużą liczbę rekordów. Obliczyłem, że u szczytu średnia liczba zapisów wynosi około 3-4 miliardy dziennie (20 godzin pracy). Moje oryginalne rozwiązanie (zanim wykonałem faktyczne obliczenie danych) polegało na tym, że moja aplikacja wstawiała rekordy do tej samej tabeli, …
Mam instrukcję SQL UPDATE z klauzulą „TOP (X)”, a wiersz, w którym aktualizuję wartości, ma około 4 miliardów wierszy. Kiedy używam „TOP (10)”, otrzymuję jeden plan wykonania, który wykonuje się niemal natychmiast, ale kiedy używam „TOP (50)” lub większego, zapytanie nigdy (przynajmniej nie podczas oczekiwania) kończy się i używa zupełnie …
Zasugerowano mi, że użycie instrukcji IF w partiach t-SQL jest szkodliwe dla wydajności. Próbuję znaleźć jakieś potwierdzenie lub potwierdzić to twierdzenie. Używam SQL Server 2005 i 2008. Twierdzenie jest następujące: IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END SQL Server nie może …
Mam taki stół: CREATE TABLE Updates ( UpdateId INT NOT NULL IDENTITY(1,1) PRIMARY KEY, ObjectId INT NOT NULL ) Zasadniczo śledzenie aktualizacji obiektów o rosnącym ID. Konsument tej tabeli wybiera fragment 100 różnych identyfikatorów obiektów, uporządkowanych według UpdateIdi rozpoczynając od określonego UpdateId. Zasadniczo, śledząc, gdzie przerwał, a następnie sprawdzając wszelkie …
Zwykle projektuję swoje bazy danych według następujących zasad: Nikt inny niż db_owner i sysadmin nie ma dostępu do tabel bazy danych. Role użytkowników są kontrolowane na poziomie aplikacji. Zwykle używam jednej roli db, aby przyznać dostęp do widoków, procedur przechowywanych i funkcji, ale w niektórych przypadkach dodam drugą regułę, aby …
Biorąc pod uwagę następującą tabelę sterty z 400 wierszami ponumerowanymi od 1 do 400: DROP TABLE IF EXISTS dbo.N; GO SELECT SV.number INTO dbo.N FROM master.dbo.spt_values AS SV WHERE SV.[type] = N'P' AND SV.number BETWEEN 1 AND 400; oraz następujące ustawienia: SET NOCOUNT ON; SET STATISTICS IO, TIME OFF; SET …
Mam zapytanie, które działa znacznie szybciej z select top 100i znacznie wolniej bez top 100. Liczba zwróconych rekordów wynosi 0. Czy możesz wyjaśnić różnicę w planach zapytań lub udostępnić linki tam, gdzie taka różnica jest wyjaśniona? Zapytanie bez toptekstu: SELECT --TOP 100 * FROM InventTrans JOIN InventDim ON InventDim.DATAAREAID = …
Usiłuję zminimalizować koszty sortowania w planie zapytań z ostrzeżeniem Operator usedtempdbto spill data during execution with spill level 2 Znalazłem kilka postów związanych z danymi wycieków podczas wykonywania z poziomem wycieku 1 , ale nie w poziomie 2. Poziom 1 wydaje się być spowodowany nieaktualnymi statystykami , a co z …
Załóżmy, że mamy taką definicję tabeli: CREATE TABLE MyTab ( ID INT IDENTITY(1,1) CONSTRAINT PK_MyTab_ID PRIMARY KEY ,GroupByColumn NVARCHAR(10) NOT NULL ,WhereColumn DATETIME NULL ) I filtrowany indeks nieklastrowany taki jak ten: CREATE NONCLUSTERED INDEX IX_MyTab_GroupByColumn ON MyTab (GroupByColumn) WHERE (WhereColumn IS NULL) Dlaczego ten indeks nie „obejmuje” tego zapytania: …
Mamy dużą bazę danych, około 1 TB, działającą na serwerze SQL Server 2014 na silnym serwerze. Wszystko działało dobrze przez kilka lat. Około 2 tygodnie temu wykonaliśmy pełną konserwację, która obejmowała: Zainstalowanie wszystkich aktualizacji oprogramowania; odbuduj wszystkie indeksy i kompaktowe pliki DB. Nie spodziewaliśmy się jednak, że na pewnym etapie …
Mam poniższe zapytanie: select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) Powyższe zapytanie kończy się w ciągu trzech sekund. Jeśli powyższe zapytanie zwraca jakąkolwiek wartość, chcemy, aby procedura przechowywana zakończyła się, więc przepisałem ją jak poniżej: If Exists( …
I ciągle widzę ludzi powiedzieć, że indeksy spowolnić update, deletea insert. Jest to używane jako instrukcja zbiorcza, tak jakby była absolutem. Podczas dostrajania mojej bazy danych w celu poprawy wydajności ciągle napotykam na tę sytuację, która wydaje mi się logicznie sprzeczna z tą regułą i nigdzie nie mogę znaleźć nikogo, …
Mam dwa prawie identyczne zapytania uruchomione w tej samej instancji SQL Server 2005: Pierwszym z nich jest oryginalne SELECTzapytanie wygenerowane przez LINQ (wiem, wiem ... nie jestem programistą aplikacji, tylko DBA :). Drugi jest dokładnie taki sam jak pierwszy, dodany OPTION (RECOMPILE)na końcu. Nic innego się nie zmieniło. Pierwszy trwa …
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.