Articles of performance

Wie optimieren Sie die databaseleistung beim Bereitstellen von Ergebnissen für die automatische Vervollständigung / iterative search?

Hinweis: In dieser Frage verwende ich den Begriff "Autocomplete" (oder "iterative search"), um auf searchrgebnisse zurückzugreifen, wie sie beispielsweise die Google-search bietet. Auch meine Frage ist nicht spezifisch für Webanwendungen vs. fette Client-Apps. Wie werden SQL SELECT-Abfragen normalerweise so konstruiert, dass sie eine angemessene performance für diese Art von Abfrage bieten, insbesondere bei beliebig großen […]

PostgreSQL Shuffle-Spaltenwerte

Wie kann ich in einer Tabelle mit> 100.000 Zeilen die Werte einer bestimmten Spalte effizient mischen? Tabellendefinition: CREATE TABLE person ( id integer NOT NULL, first_name character varying, last_name character varying, CONSTRAINT person_pkey PRIMARY KEY (id) ) Um die data zu anonymisieren, muss ich die Werte der 'first_name'-Spalte an Ort und Stelle mischen (ich darf […]

Ganzzahlige Darstellung eines dates

Im letzten Projekt hatten wir ein Problem mit der performance von wenigen Abfragen, die stark auf die Reihenfolge der Ergebnisse nach date / Uhrzeit-Feld (MSSQL 2008-database) angewiesen waren. Wenn wir die Abfragen mit ORDER BY RecordDate DESC (oder ASC) ausgeführt haben, wurden die Abfragen 10x langsamer ausgeführt als ohne. Die Bestellung durch irgendein anderes Feld […]

Oracle Partition Pruning mit Bind-variables

Ich habe eine große Tabelle (150m + Zeile), die mit einem DATE-Partitionsschlüssel in Viertel unterteilt ist. Wenn ich die Tabelle mit etwas wie … abfrage SELECT * FROM LARGE_TABLE WHERE THE_PARTITION_DATE >= TO_DATE('1/1/2009', 'DD/MM/YYYY') AND THE_PARTITION_DATE < TO_DATE('1/4/2009', 'DD/MM/YYYY'); … Partitionierung funktioniert einwandfrei … der Optomizer erkennt, dass er nur eine Partition (in diesem Fall […]

Wie kann ich die performance der Durchschnittsmethode in SQL verbessern?

Ich habe einige performancesprobleme, bei denen eine SQL-Abfrage, die den Durchschnitt einer Spalte berechnet, mit zunehmender Anzahl der datasätze immer langsamer wird. Gibt es einen Indextyp, den ich der Spalte hinzufügen kann, um schnellere Durchschnittsberechnungen zu ermöglichen? Die fragliche database ist PostgreSQL und ich bin mir bewusst, dass ein bestimmter Indextyp möglicherweise nicht verfügbar ist, […]

Wie wählt man Zeilen mit genau 2 Werten in einer Spalte innerhalb einer Tabelle mit 10 Millionen datasätzen aus?

Ich habe eine Tabelle (TestFI) mit den folgenden data zum Beispiel FIID Email ——— null a@a.com 1 a@a.com null b@b.com 2 b@b.com 3 c@c.com 4 c@c.com 5 c@c.com null d@d.com null d@d.com und ich brauche datasätze, die genau zweimal erscheinen UND 1 Zeile mit FIID haben null und eins ist nicht. Für die oben genannten […]

PostgreSQL-Partitionierung mit verknüpfter Tabelle – Partitionsbeschränkung nicht im Abfrageplan verwendet

Ich habe eine große Tabelle in PostgreSQL 9.2, die ich wie im Handbuch beschrieben partitioniert habe. Naja fast! Mein echter Partitionsschlüssel befindet sich nicht in der partitionierten Tabelle selbst, sondern in einer verbundenen Tabelle, wie diese (vereinfacht): — millions to tens of millions of rows CREATE TABLE data ( slice_id integer NOT NULL, point_id integer […]

PostgreSQL-Bitmap Der Heap-Scan im Index ist sehr langsam, aber der Nur-Index-Scan ist schnell

Ich erstelle eine Tabelle mit 43kk Zeilen, bevölke sie mit Werten 1..200. So ~ 220k pro Nummer verteilt durch den Tisch. create table foo (id integer primary key, val bigint); insert into foo select i, random() * 200 from generate_series(1, 43000000) as i; create index val_index on foo(val); vacuum analyze foo; explain analyze select id […]

Effiziente Vier-pathe-Verbindung mit Oracle SQL

Ich habe zwei Tabellen, Table1 und Table2, denen ich join möchte. Jede Tabelle hat zwei eindeutige Schlüssel, nennen wir sie Key1 und Key2 . Was ich tun möchte, ist LEFT JOIN Table2 to Table1, wo alle Schlüssel in einer der vier möglichen Kombinationen übereinstimmen: Table1.Key1 = Table2.Key1 Table1.Key1 = Table2.Key2 Table1.Key2 = Table2.Key1 Table1.Key2 = […]

Wählen Sie count (*) oder behalten Sie einen Zähler

Unter der Annahme, dass Indizes eingerichtet sind und absolute-count-Genauigkeit nicht notwendig ist (es ist in Ordnung, um eins oder zwei zu sein), ist es in Ordnung zu verwenden: Option A select count(*) from Table where Property = @Property vs Option B update PropertyCounters SET PropertyCount = PropertyCount + 1 where Property = @Property dann tuend: […]