Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

1. Februar 2007 um 22:16

SQL: effizient Daten erzeugen

Im gestrigen Posting zu SQL habe ich noch einen anderen Trick von Itzik Ben-Gan verwendet, mit dem man besonders effizient Daten generieren und in eine Tabelle schreiben kann: beim Füllen der Hilfstabelle, in der z.B. die Zahlen von 1 bis 8000 gespeichert werden und daher nur eine Spalte "n" hat.

Prozedural würde man eine Schleife von 1 bis 8000 machen und 8000 Insert-Befehle absetzen. Das ist allerdings im mengenorientirten SQL sehr ungünstig, weil die vielen Einzeloperationen unnötig viel Zeit kosten. Den Unterschied bemerkt man vor allem, wenn es anstelle der 8.000 mal 8.000.000 Datensätze sind…

Viel effizienter ist es einen Datensatz einzufügen und dann in einer Schleife die Daten immer wieder zu kopieren (und damit zu verdoppeln). Für 8.000 Datensätze sind dann gerade mal 13 Inserts notwendig. Aber erst mit 80.000 bzw. 800.000 Datensätzen wird die Performance "spürbar". Im Vergleich zur "normalen" Schleife ergibt sich auf meinen heimischen PC ein Performance-Unterschied von Faktor 3 bis 6.

declare @max integer,
@rc integer;

set @max=8000;
set @rc=1;
insert into hilfstabelle (n) values (1);

while @rc<=@max begin -- sehr effizentes Füllen durch mengenorientierten Ansatz: insert into hilfstabelle (n) select @rc+n from hilfstabelle where @rc+n<=@max; set @rc=@rc*2; end

Damit nicht ungewollt zu viele Datensätze eingefügt werden, ist der Filter "where @rc+n<=@max" im SELECT des Inserts notwendig. Vorbereitung: if object_id(N'hilfstabelle') is not null drop table hilfstabelle
create table hilfstabelle (n integer primary key)

Der Code steht auch zum Download bereit.

1. Februar 2007 um 08:48

Ideen für Diagramme

Auf der Webseite von visual-literacy.org findet man ein "Periodensystem der Visualisierungsmethoden". Da sind sicher einige gute Anregungen dabei, um die eigenen Vorstellungen mal auf eine andere Art zu präsentieren. Leider werden die Thesen, Vorschläge oder Vor-/Nachteile ja doch meist als Spiegelstrich-Listen vorgestellt. Oft genug komplett ausformuliert, damit es Nichtanwesende, die die Folien später sehen auch richtig verstehen. Warum es nicht mal anders versuchen?

Alle Angaben ohne Gewähr: Das sind so viele, dass ich mir mal nur zwei angesehen habe. Eine war sehr innovativ, die andere eher schon ältlich. Aber der Punkt ist: hier ist bestimmt für fast jeden Anlass etwas dabei!

|