Autor Beitrag
lkz633
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: So 23.06.02 15:20 
Hi,

ich fuelle eine normale combobox mit Daten aus einer Tabelle. Was ist nun schneller ?

1) wenn ich die sql abfrage um ein order by erweitere

2) oder wenn ich bei der cb sorted auf true setze

Danke fuer eure antworten

Gruss lkz633
Marc
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 169

Win 2000, Win XP, SuSE Linux 8.2

BeitragVerfasst: So 23.06.02 15:24 
Hi lkz633,

ich gehöre zu den Leute die am liebsten alles in der SQL-Abfrage stecken. Was aber wirklich schneller ist kann ich Dir nicht sagen. Wie wäre es, wenn Du Dich mal mit einer Stoppuhr am PC setzt und es testest?

Gruß Marc
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: So 23.06.02 15:30 
Hui, schwierige Frage.

Da kommen aber mehere Faktoren zum Zuge.

Zunächst würde ich sagen, dass Sorted schneller ist.

Doch es kommt auf die Anzahl der Einträge an und von wo die abgerufen werden.

Handelt es sich dabei um ein paar Hundertausend, so ist wohl SQL schneller. Wird die Abfrage dazu noch auf einem DB-Server ausgeführt, so ist SQL wohl auch schneller.

Aber wozu so viele Einträge in einer CB?
Ich denke mal, dass Sorted dicke ausreicht.

Grüße

Torsten
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 23.06.02 17:49 
Hallo,

die Frage nach der Performance kann ich auch nicht beantworten. Dazu musst du wie Marc vorgeschlagen hat mal "mitstoppen" (aber besser im Programm als mit der Stopuhr ;)).
Alledings beforzuge ich auch die Sortierung im Query, denn so kann ich auch bequem den Sonderfall XYZ verwirklichen, bei dem Zwar die Namen in der Combobox angezeigt werden sollen aber Sortiert nach der Postleitzahl.
Mit dem Query habe ich also mehr freiheiten.

Gruß
Klabautermann
Alfons-G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: Mo 24.06.02 12:57 
Hi,
bei einer lokalen Datenbank ist vermutlich sorted schneller. Die Arbeit wird ohnehin auf dem Rechner gemacht. Es hängt natürlich auf von der SQL-Engine ab, wie schnell ein order by verarbeitet wird.

Sobald Du eine Client/Server-Datrenbank verwendest, ist das Sortieren in der SQL-Abfrage vorzuziehen, ausgenommen, der Server pfeift aus dem letzten Loch.

Ein nennenswerter Zeitunterschied darf eigentlich bei den Datenmengen, mit denen man normalerweise eine Combobox füllt, ohnehin nicht auftreten.
Ansonsten bleibt der Tipp von Marc, die Zeit zu stoppen.
Dazu musst Du Dich allerdings nicht mit der Stoppuhr davor setzen :)
Du fragst im Programm die Zeit ab und speicherst sie in einer Variable. Dann öffnest Du die Abfrage, zeigst die Werte in der Combobox an und holst Dir nochmal die Zeit.
Entweder lässt Du Anfangs- und Endwert einfach anzeigen oder Du schreibst eine kleine Routine, welche mit DecodeTime und etwas Arithmetik die Laufzeit berechnet.

:D

_________________
Alfons Grünewald