Articles of postgresql

Warum nimmt LIMIT 2 in dieser Abfrage Größenordnungen länger als LIMIT 1?

Ich bin auf PostgreSQL 9.3. Dies sollte auf jedem Tisch mit mehr als 100.000 Zeilen reproduzieren. Die EXPLAIN ANALYZE zeigt viel mehr Zeilen, die mit LIMIT 2 gescannt wurden, aber ich kann nicht herausfinden warum. Grenze 1: EXPLAIN ANALYZE WITH base AS ( SELECT *, ROW_NUMBER() OVER () AS rownum FROM a_big_table ), filter AS […]

PostgreSQL: Zugriff auf die Spalte für den anonymen datasatz

Ich habe ein Problem, an dem ich gerade arbeite. Unten ist eine vereinfachte Abfrage, um das Problem zu zeigen: WITH the_table AS ( SELECT a, b FROM (VALUES('data1', 2), ('data3', 4), ('data5', 6)) x (a, b) ), my_data AS ( SELECT 'data7' AS c, array_agg(ROW(a, b)) AS d FROM the_table ) SELECT c, d[array_upper(d, 1)] […]

Erklären – fügt nur eine Zeile ein

Ich versuche, den Optimierungsplan für weitere Analysen manuell zu speichern, wie folgt: do $$ declare tmp text; begin explain select * from public.some_table where 1=2 into tmp; insert into public.plans(plan) values (tmp); end; $$ Aber wenn ich es später auswähle, sehe ich nur die erste Zeile der EXPLAIN-statement: Result (cost=0.00..82.97 rows=1 width=114) Wie kann ich […]

SQL selektiert und gruppiert datasätze mit gleichen Wörtern in unterschiedlicher Reihenfolge

Ich habe folgende Werte in einer Tabelle: Tischfrüchte id | name | price —————————————– 1 | 'APPLE BANANA ORANGE' | 12.00 2 | 'BANANA ORANGE APPLE' | 4.00 3 | 'ORANGE APPLE BANANA' | 10.00 4 | 'LEMON APPLE BANANA ORANGE' | 7.00 5 | 'APPLE LEMON BANANA ORANGE' | 8.00 Ich möchte alle Werte […]

Optimieren Sie die SQL-Abfrage in PostgreSQL

Ich habe eine SQL-Abfrage und ist sehr langsam und auch nicht mich Indizes in PostgreSQL gefangen. Die Abfrage: select s.id as id, utt.count as menciones, ut.usuario as user_twitter, ut.id as id_user_twitter from busquedas_busqueda bu join dashboards_tablaagregadatwitterdiaria s on s.busqueda_id = bu.id join dashboards_usuariotwitter_tablaagregadatwitterdiaria utt on utt.tabla_id = s.id join busquedas_usuario_twitter ut on ut.id = utt.usuario_id […]

Warum kann Index Only Scan nicht für Indizes verwendet werden, die mit COALESCE erstellt wurden?

PostgreSQL 9.4 Die Tabelle wird wie folgt erstellt: CREATE TABLE foo ( id integer, date date, value numeric(14,3) ); Ich optimiere eine Abfrage mit der ROW_NUMBER() und COALESCE . Am effizientesting tendiere ich dazu, Index Only Scan in der folgenden Abfrage zu verwenden: SELECT id, c_val FROM ( SELECT id, COALESCE(value, 0) c_val, ROW_NUMBER() OVER(PARTITION […]

Löschen der Postgres-Rolle und database nach vielen Grants

Ich versuche, drop role von einer Postgres-Instanz effektiv zu drop role und in einige Probleme zu laufen. Ich suche nach etwas SQL, drop role damit ich aufhören kann, Fehlermeldungen zu lesen und nicht manuell tun muss. Im Setup, in dem ich arbeite, erhält jede Rolle eine eigene database mit dem gleichen Namen: CREATE ROLE alpha_user; […]

Schaltet PostgreSQL seine BOOL_OR () Auswertung kurz?

EXISTS ist schneller als COUNT(*) weil es kurzgeschlossen werden kann Sehr oft überprüfe ich gern die Existenz von Dingen in SQL. Zum Beispiel mache ich: — PostgreSQL syntax, SQL standard syntax: SELECT EXISTS (SELECT .. FROM some_table WHERE some_boolean_expression) — Oracle syntax SELECT CASE WHEN EXISTS (SELECT .. FROM some_table WHERE some_boolean_expression) THEN 1 ELSE […]

Wie gibt man mehrere Zeilen in PostgreSQL mit RECORD zurück?

Ich versuche, eine function zu erstellen, die eine SQL-Abfrage für mehrere Tabellen ausführt und die resultierende Tabelle aus der Abfrage ausgibt. Die resultierende Tabelle enthält mehrere Zeilen. Ich habe eine Menge Schwierigkeiten damit und ich habe Beiträge gelesen, die vorschlagen, RETURN NEXT aber ich habe es auch nicht geschafft. Von dem, was ich verstehe, kann […]

Wie funktionieren sql-rekursive statementen?

Ich versuche sql rekursive Aussagen zu verstehen, aber es ist wirklich schwer für mich. Beispielsweise: Das ist ein Beispiel, das ich versuche zu verstehen und die Ausgabe aufzuschreiben. Kann mir bitte erklären, wie das geht, Schritt für Schritt? Grüße und Danke im Voraus Maya