Ich versuche, einen Weg zu finden, um die Größe einer Tabelle zu reduzieren, die zu einer alarmierenden Größe durch Konsolidierung ähnlicher Einträge wächst. Ich habe eine funktionierende "Group By" -Abfrage bekommen, die die Daten wie gewünscht aufrollt. Ich bin einfach nicht sicher, wie ich die vorhandenen Einträge löschen und neue hinzufügen kann, basierend auf dieser Select-Anweisung. Ich nehme an, die einfachste Methode wäre das Auswählen, Speichern dieser Ergebnisse im Speicher, Löschen der Tabelleneinträge und Einfügen der konsolidierten Einträge. Aber das scheint ineffizient zu sein und würde eine Menge Speicher benötigen, in der Hoffnung, dass es vielleicht eine Möglichkeit gibt, etwas sql magic auszuführen und dies auf einmal geschehen zu lassen.SQL-Gruppe Nach vorhandenen Zeilen, löschen Sie sie und fügen Sie nach Ergebnissen gruppieren
Das ist meine 'Gruppe von' wählen:
select SUM(user_in),
SUM(user_out),
SUM(user_total),
name,
device_type,
device_os,
ownership,
host_name
FROM user_usage
GROUP BY name,
device_type,
device_os,
ownership,
host_name;
Dank!
Falls jemand anderes jemals läuft in etwa so aus, erfüllt diese Funktion die Konsolidierung während sehr effizient zu sein:
CREATE OR REPLACE FUNCTION consolidate_user_bandwidths(
IN _tbl REGCLASS,
IN _savetime TIMESTAMP
) RETURNS void AS
$BODY$
BEGIN
EXECUTE 'CREATE TEMP TABLE user_bandwidths_temp ON COMMIT DROP AS
SELECT MAX(id) AS id, SUM(bandwidth_in) AS bandwidth_in,
SUM(bandwidth_out) AS bandwidth_out,
'''|| _savetime ||'''::timestamp AS created_at,
SUM(bandwidth_total) AS bandwidth_total, name,
device_type, device_os,
ownership, host_name
FROM '|| _tbl ||'
GROUP BY name, device_type,
device_os, ownership, host_name';
EXECUTE 'TRUNCATE TABLE '|| _tbl ||'';
EXECUTE 'INSERT INTO '|| _tbl ||' SELECT * FROM user_bandwidths_temp';
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Was sind Ihre RDBMs? –
Wenn Sie viele unerwünschte Duplikate erhalten, sollten Sie sich die Logik Ihres Codes ansehen, der der Tabelle user_usage – SpacePhoenix
Einträge hinzufügt Tabellenschema hinzufügen. – McNets