AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Strings schnell ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Strings schnell ersetzen

Ein Thema von Nersgatt · begonnen am 28. Apr 2015 · letzter Beitrag vom 29. Apr 2015
Antwort Antwort
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

AW: Strings schnell ersetzen

  Alt 29. Apr 2015, 06:36
Da muss man natürlich die Rahmenbedingungen kennen.

Ich fülle das Grid ja nicht mit allen Daten aus der Datenbank, sondern es findet eine Vorfilterung per SQL statt, die die Ergebnismenge schon enorm einschränkt. Nun hab ich das Grid von DevExpress, mit dem die Benutzer nach jeder Spalte hoch- und runter filtern können, wie es ihnen grade beliebt. Das kommt gut an. Und durch die Vorfilterung per SQL ist die Performance auch gut.

Mit den Akzentzeichen ist es nun so, dass diese die Anwender der Software eigentlich gar nicht interessieren, sie aber nunmal in der Datenbank stehen. Mit der Funktion auf Datenbankebene kann ich das Akzentzeichen so früh wie möglich für die Anzeige im Grid rausfiltern. Daher finde ich die Lösung gar nicht soo schlecht.
Ich habe auch schon kurzzeitig überlegt, eine weitere Spalte einzufügen, wohin die Daten ohne Akzentzeichen per Trigger kopiert werden. Aber dazu konnte ich mich noch nicht durchringen, da ich damit ja die Datenbank denormalisieren würde. Davon bekomm ich immer Sodbrennen.

Die Performance der Funktion ist auch in Ordnung, aber etwas schneller wäre halt doch schön.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Strings schnell ersetzen

  Alt 29. Apr 2015, 06:54
Ich habe auch schon kurzzeitig überlegt, eine weitere Spalte einzufügen, wohin die Daten ohne Akzentzeichen per Trigger kopiert werden. Aber dazu konnte ich mich noch nicht durchringen, da ich damit ja die Datenbank denormalisieren würde. Davon bekomm ich immer Sodbrennen.
Na und? Normalisierung wird überbewertet.
Spaß bei Seite.

Alles, was du auf die vorhandenen Daten anwendest, wird dich Performance kosten. Es ist eigentlich nur zu prüfen, wie stark sich das auswirkt. Sind die Auswirkungen in allen Fällen zu groß, muss man auch mal mit den Regeln brechen.
Bei der Erfassung und Änderung der Daten einen Trigger auszulösen, ist für den Anwender in diesem Fall nicht spürbar. Dafür wird es bei den Abfragen keine ernsthaften Geschwindigkeitsnachteile geben. Ein Feld mehr abzufragen ist vielleicht messbar, aber wohl kaum wahrnehmbar.

Hierzu vielleicht ein passendes Zitat:
Zitat:
Jack Sparrow: Well, then, I confess, it is my intention to commandeer one of these .... And thirdly, the code is more what you'd call "guidelines" than actual rules.
Peter
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Strings schnell ersetzen

  Alt 29. Apr 2015, 08:16
Mittlerweile würde ich das auch in der DB oder in einer Zwischenschicht lösen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Strings schnell ersetzen

  Alt 29. Apr 2015, 10:59
Ich habe auch schon kurzzeitig überlegt, eine weitere Spalte einzufügen, wohin die Daten ohne Akzentzeichen per Trigger kopiert werden. Aber dazu konnte ich mich noch nicht durchringen, da ich damit ja die Datenbank denormalisieren würde. Davon bekomm ich immer Sodbrennen.
Na Du wärst jedenfalls nicht der erste, der so etwas anwendet. Da Benutzer im allgemeinen nicht in der Lage sind Tennzeichen, führende Nullen ,Prüfziffern und sonstigen Firlefanz richtig einzugeben gibt es ein Feld "eingedampfter Wert" mit dem Inhalt 12345 da kann man nach 12-345, 123-45, 1-234.5 suchen und wird immer fündig, bzw. es kommt immer ein Vorschlag was es wohl sein könnte. Gut streng genommen handelt es sich um ein Datum was nicht zu meinen Daten gehört, auf der anderen Seite erleichtert es die Suche.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Strings schnell ersetzen

  Alt 29. Apr 2015, 12:14
Ich habe mal gelernt: Jede Operation sollte nur einmal gemacht werden. Und dieses Ersetzen von Sonderzeichen ist genau so ein Fall. Man kann natürlich dem SQL-Server jedesmal aufs neue die Arbeit aufbürden, in allen selektierten Zeichenketten die Sonderzeichen zu ersetzen, bei jeder Abfrage neu, 250.000x am Tag.

Man kann es aber auch nur einmal machen und die umgewandelte Zeichenkette mitspeichern. Redundanz ist nicht immer ein No-Go, und dieser Fall hier ist ein Paradebeispiel dafür, das ein wenig Redundanz gar nicht so verkehrt ist.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz