AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi array of records mit Daten aus SQL Query füllen
Thema durchsuchen
Ansicht
Themen-Optionen

array of records mit Daten aus SQL Query füllen

Ein Thema von Gushiken · begonnen am 27. Nov 2008 · letzter Beitrag vom 27. Nov 2008
Antwort Antwort
Seite 2 von 2     12   
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 14:06
ich schließe mich mal meinen vorrednern an zum thema "das ist die aufgabe der DB".

Wenn du den krempel wirklich lokal machen "möchtest" solltest du überlegen das initiale befüllen der records in einen thread auszulagern und im hintergrund zu machen. bis der job fertig ist muss der nutzer mit der "langsamen" datenbank vorlieb nehmen.


hier noch ne info für die anderen:
Zitat von Gushiken, anderes Forum:
Die Daten benötige ich zum Programmstart, zudem soll alle 10-15min ein update der Daten gemacht werden.
gruß
reli
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 14:11
Hallo,

bei 'nem Index für jede der Spalten
Code:
strassen.id
orte.id
personen.strassen_id
personen.orte_id
personen.sys_delete
sollte das auch mit 'nem MSSQL-Server ratzfatz gehen.
Wenn's Stringgrid nur zum Lesen und nicht für die Anzeige gebraucht wird, dann ist doch sicherlich Visible := false?

Und wenn schon die Daten im Arbeitsspeicher, was macht ihr den bei Änderungen an den Daten, jedesmal Programm neu starten und warten. Bevor Du irgend welche Umwege machst, um Geschwindigkeitsprobleme der Datenbank zu umgehen, sorg' erst mal dafür, dass Du die Fähigkeit der Datenbank ausreizt. Wenn's dann noch unerträglich sein sollte, dann überleg' Dir Alternativen.

MSSQL ist sicherlich nicht berühmt für Geschwindigkeit, aber auf einem halbwegs zeitgemäßen Server ist's für die Abfrage von Personendaten durchaus schnell genug. Wie oft suchen die Anwender denn überhaupt? Permanent oder 3 Stück die Stunde, da kann dann eine Wartezeit von 'ner Sekunde durchaus ok sein. Und wenn's mal 2 oder 3 sind, schimpft auch noch kein Anwender. Aber ob's nun 3ms oder 50ms oder 500ms sind, das merkt doch niemand. Und lohnt sich dafür der Aufwand, beim Programmstart alles in den Speicher zu laden und dabei möglichst viel Zeit zu sparen?

Wenn's Dir drum geht, zu lernen, wie man sowas programiert, okay, aber für den dauerhaften Arbeitseinsatz, überleg Dir das noch mal.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 14:12
Zitat von Gushiken:
.. meinte das eine Personensuche bei einer Tabelle mit ca 100.000 Datensätzen schnell 20s dauert, inkl. Verarbeitung und Anzeige im Grid.
Komisch das ich Wildcardsuchen auf ca. 1 Mio. Datensätze in weniger Zeit hinbekomme. Zeiten bei DB-Servern hängen von Faktoren wie Speicher/HD-Ausbau, ... ab. Aber über 100 k Datensätze lacht so ziemlich jede Datenbank.

Zitat von Gushiken:
Zudem verwenden wir einen MSSQL Server der, soweit ich weiß, ne ganze Ecke langsamer ist als MySQL.
Quatsch. Ich habe hier ähnliche Datenmengen einmal auf MS SQL Server (2005) und einmal MySQL (5.0.x), jeweils 64-Bit auf der gleichen Maschiene laufen und spielen bei unseren Abfragen in einer ähnlichen Liga. Nur unser Oracle (32-Bit) fällt ewas ab.

Zitat von Gushiken:
Aber wie groß war die Datenbank denn wenn die Abfrage bloß 3ms dauert?? Und hattest du LEFT JOIN's in der Abfrage? Hier mal die 'echte' SQL Abfrage:
Existiert auf p.sys_delete ein Index? Falls nein machst du einen Full-Table-Scan welcher längert dauert als wenn ein Index verwendet werden kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Gushiken

Registriert seit: 23. Jan 2007
12 Beiträge
 
#14

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 14:28
Hm... okay.. das mit dem Index und so müsste man mal testen.
Im Moment braucht der Datenbankserver für das auslesen der Daten für das Array ca 6 Sekunden.
Ein SELECT * braucht 19 Sekuden.

Da man an der Performance beim erstellen des Arrays anscheinend nicht mehr viel machen kann werden wir wohl unsere Datenbankstruktur etwas überarbeiten müssen. Das wird ein Spaß.. -.-

Nunja, trotzdem DANKE für die extrem schnellen und auch guten Antworten, ich war ehrlich gesagt doch etwas überrascht!!

  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 17:42
Erkläre mir mal den Zusammenhang zwischen dem hier :

Zitat von Gushiken:
Das Grid bremst das ganze zwar schon deutlich, etwas über eine Minute, aber auch ohne die Visualisierung im Grid bemötige ich noch durchschnittlich 3-4 Minuten...
und dem :

Zitat von Gushiken:
Im Moment braucht der Datenbankserver für das auslesen der Daten für das Array ca 6 Sekunden.
Wo liegt jetzt der Haken ? Das sieht doch ziemich offensichtlich aus. Verwunderlich ist dann noch, dass keiner auf TStrings bzw. TStringList verweist. Das ist zum Zusammensuchen von Daten jedenfalls besser geeignet als die visuellen Dinger.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 17:49
Naja, mit TStrings wird es aber schwierig, eine Matrix abzubilden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: array of records mit Daten aus SQL Query füllen

  Alt 27. Nov 2008, 17:53
Array of Record schreit ja auch geradezu nach einer TObjectList. Aber meine Zwischenfrage ist damit noch nicht beantwortet.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz