Kurz gesagt, wir aktualisieren kleine Personentabellen mit Werten aus einer sehr großen Personentabelle. In einem kürzlich durchgeführten Test dauert die Ausführung dieses Updates ca. 5 Minuten. Wir sind auf die scheinbar albernste Optimierung gestoßen, die scheinbar perfekt funktioniert! Dieselbe Abfrage wird jetzt in weniger als 2 Minuten ausgeführt und führt …
Vor einiger Zeit veröffentlichte Brent Ozar einen Beitrag, in dem einige der Unterschiede zwischen SQL Server und PostgreSQL beschrieben wurden: Zwei wichtige Unterschiede zwischen SQL Server und PostgreSQL Der erste Punkt („CTEs sind Optimierungszäune“) ist mir aufgefallen, da es offensichtlich ist, dass SQL Server im bereitgestellten Beispiel den CTE und …
Ich habe eine Tabelle in einer SQL Server-Datenbank mit einem Clustered-Index für den Primärschlüssel. Die Tabelle enthält 1 Million Zeilen. Wenn ich 10K-Zeilen aus der Tabelle lösche, wird der Index während des Löschvorgangs umstrukturiert? Der Löschvorgang ist Teil der gespeicherten Prozedur. Es kann gleichzeitig mehr als ein Client die gespeicherte …
Laut Craig Ringer : Während es normalerweise eine gute Idee ist, einen Index für Ihre referenzseitigen Fremdschlüsselspalten zu erstellen (oder einzuschließen), ist dies nicht erforderlich. Jeder Index , den Sie hinzufügen verlangsamt Operationen leicht nach unten DML, so dass Sie auf Kosten der Leistung auf jeder zahlen INSERT, UPDATEoder DELETE. …
Ich verwende den folgenden rekursiven CTE als minimales Beispiel, aber im Allgemeinen muss der Optimierer standardmäßige "erratene" Kardinalitäten für rekursive CTEs verwenden: with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 5 …
Ich verwalte eine Archivdatenbank, in der historische Daten in partitionierten Ansichten gespeichert werden. Die Partitionierungsspalte ist eine Datums- / Uhrzeitangabe. In jeder Tabelle unter der Ansicht werden Daten für einen Monat gespeichert. Wir beschränken die Ereignisse für jede Tabelle mit einer Prüfbeschränkung für die datetime-Spalte. Auf diese Weise kann der …
In einem Projekt, an dem ich arbeite, muss jede Änderung an den Zeilen in einigen Tabellen der Datenbank für eine weitere Prüfung oder ein Rollback nachverfolgt werden . Es muss leicht zu finden sein, wer die Zeile von welcher IP-Adresse und wann geändert hat, und die vorherige Version wiederherstellen können. …
Postgres Neuling hier. Ich frage mich, ob diese Abfrage optimiert ist oder nicht. Ich habe versucht, nur die Werte zu verbinden, die zu 100% erforderlich sind, und alle dynamischen Bedingungen in der WHERE-Klausel zu belassen. Siehe unten. SELECT * FROM myapp_employees JOIN myapp_users ON myapp_users.user_id=myapp_employees.user_id JOIN myapp_contacts_assoc ON myapp_contacts_assoc.user_id=myapp_users.user_id JOIN …
Betrachten Sie diese Abfrage, die aus NSelf-Joins besteht: select t1.* from [Table] as t1 join [Table] as t2 on t1.Id = t2.Id -- ... join [Table] as tN on t1.Id = tN.Id Es wird ein Ausführungsplan mit N Cluster-Index-Scans und N-1-Zusammenführungsverknüpfungen erstellt. Ehrlich gesagt sehe ich keine Gründe, nicht alle …
Das Konvertieren einer regulären Spalte in eine persistierte berechnete Spalte führt dazu, dass diese Abfrage keine Indexsuchen durchführen kann. Warum? Getestet auf mehreren SQL Server-Versionen, einschließlich 2016 SP1 CU1. Repros Mit einer berechneten Spalte Mit einer regulären Spalte Das Problem ist mit table1, col7. Die Tabellen und Abfragen sind eine …
Ich weiß, wenn es um die Verwendung eines Index- oder Tabellenscans geht, verwendet SQL Server Statistiken, um festzustellen, welcher besser ist. Ich habe eine Tabelle mit 20 Millionen Zeilen. Ich habe einen Index für (SnapshotKey, Measure) und diese Abfrage: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group …
Ich muss eine SELECTAnweisung optimieren , aber SQL Server führt immer einen Index-Scan anstelle einer Suche durch. Dies ist die Abfrage, die sich natürlich in einer gespeicherten Prozedur befindet: CREATE PROCEDURE dbo.something @Status INT = NULL, @IsUserGotAnActiveDirectoryUser BIT = NULL AS SELECT [IdNumber], [Code], [Status], [Sex], [FirstName], [LastName], [Profession], [BirthDate], …
Bearbeitet: Warum werden Sitzungsberichte blockiert, warten aber mit PAGELATCH_*und nicht LCK_M_verwandten Wartetypen? Ich habe zuvor angenommen, dass SQL Server nur blockierende Sitzungen in der Spalte blockierende_Session_Id meldet. Wenn die blockierten Sitzungen auf eine logische Sperre warteten und nichts anderes wie a PAGELATCH_*.
Haftungsausschluss: Bitte entschuldigen Sie mein mangelndes Wissen über Datenbank-Interna. Hier kommt's: Wir führen eine Anwendung aus (nicht von uns geschrieben), die bei einem regelmäßigen Bereinigungsjob in der Datenbank ein großes Leistungsproblem aufweist. Die Abfrage sieht folgendermaßen aus: delete from VARIABLE_SUBSTITUTION where BUILDRESULTSUMMARY_ID in ( select BUILDRESULTSUMMARY_ID from BUILDRESULTSUMMARY where BUILDRESULTSUMMARY.BUILD_KEY …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.