AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ablage langer Zahlen

Ein Thema von KPBecker · begonnen am 10. Nov 2015 · letzter Beitrag vom 12. Nov 2015
Antwort Antwort
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#1

AW: Ablage langer Zahlen

  Alt 10. Nov 2015, 18:04
Wenn Du mit SQL danach suchen musst, dann lieber als integer, diese Datentyp kann vom Datenbank-Server besser indixiert und somit durchsucht werden.

Ein String ist da immer langsammer.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Ablage langer Zahlen

  Alt 10. Nov 2015, 19:18
Wenn Du mit SQL danach suchen musst, dann lieber als integer, diese Datentyp kann vom Datenbank-Server besser indixiert und somit durchsucht werden.

Ein String ist da immer langsammer.
Entschuldigung, das ist viertrangig. Was heißt überhaupt 'besser indexiert'? Willst Du im Ernst behaupten, das Du einen Unterschied messen kannst, zwischen einer Zahl und einem varchar(10) Datentyp? Wir leben im Jahr 2015, da ist das so was von egal.

Kurz geschätzt: Ein B-Baum hat bei 100 Mio Einträgen und einem 100er key bei einer Seitgröße von 8k eine Tiefe von ca. 5 Ebenen. In jedem Blatt sind ca. 60 Keys gespeichert. Ich bin nach ca. 40 Vergleichen am Ziel (5x Binärsuche in einer Liste mit 60 Schlüsseln).

Ein B-Baum mit einem INT- Key hat eine Tiefe von ca. 3 Ebenen, bei vielleicht 1000 Keys pro Seite/Blatt. Das sind dann 30 Vergleiche.

(Hoffentlich habe ich mich nicht komplett verrechnet)

Wer Artikelnummern als Zahl anlegt, der macht einen riesen Fehler. Spätestens Übermorgen soll doch eh umgestellt werden (Murphy rules).

Ich hatte erst 7-Stellige (bei einem DAX-Unternehmen), dann 8, aber immer numerisch. Und dann -letztendlich- doch fast numerisch. Also 12 der 14 Stellen waren schon Ziffern. Nur die blöden Verpackungscodes in der Mitte nicht. Mist.

Leg das als char/varchar(X) an, wobei X noch ein wenig Luft nach oben lässt (nun aber nicht 1000 oder so). Dann bist Du auf der sicheren Seite. Und ignoriere die premature Optimization Profis.

Geändert von Dejan Vu (10. Nov 2015 um 19:36 Uhr)
  Mit Zitat antworten Zitat
KPBecker

Registriert seit: 1. Mär 2004
Ort: Mannheim
120 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Ablage langer Zahlen

  Alt 10. Nov 2015, 19:34
Hallo, Delphi-Praktiker,

vielen Dank für die schnellen Antworten, die Sache stellt sich ja eindeutig dar.

Zusatzfrage in Bezug auf das "bißchen Luft nach oben":

Würdet ihr das DB-Feld dann grundsätzlich links mit Blank oder Nullen auffüllen, um Rechtsbündigkeit zu erreichen?
(Sortierung, Lesbarkeit, ...)

Klaus-Peter
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Ablage langer Zahlen

  Alt 10. Nov 2015, 19:42
Nein. Niemals. Wozu auch?
1. Gebot: "Verfälsche niemals die Daten"
2. Gebot: "Ein Datum erfüllt genau einen Zweck".

Wer sagt Dir, das 010101 nicht doch nach 020101 angezeigt werden soll (weil 01 die Muttern sind und 02 die Schrauben und der Chef einfach will, das Schrauben oben sind).

Wenn Du eine totale Ordnung auf deinen Artikelnummern aufbauen willst, dann führe eine separate Sortierspalte ein. Dort kannst Du dann die Ordnung aufbauen.

Weiterhin würde ich mich sowieso niemals auf irgendwelche Kodierungen verlassen, d.h. z.B. darauf schließen, das die ersten beiden Stellen der Artikelnummer immer die Materialgruppe definieren. Blödsinn: Ändert sich sowieso irgendwann.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Ablage langer Zahlen

  Alt 10. Nov 2015, 19:57
Generell: Daten so speichern wie sie rein kommen und im Original aussehen. Rechtsbündigkeit, auffüllen, damit es besser aussieht, gehört in die Darstellung, wenn die Daten dem Benutzer präsentiert werden.

Wenn du sie geschönt in der DB abspeicherst und brauchst sie im Original. Was dann? Wo wurde wie geschönt? Big problem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#6

AW: Ablage langer Zahlen

  Alt 11. Nov 2015, 18:07
Gerade bei Material, Bestellnummer o.ä. würde ich immer Char den vorzug geben.
1. Weiß man wirklich nie, ob sich Regeln wie "Beinhaltet nur Ziffern", auch wenn sie zur Zeit Gültigkeit haben, nicht doch irgendwann mal ändern (oder ändern müssen).

2. (obwohl ich nicht weiß, ob das mal einen Unterschied machen kann) man doch eh bei Suchen auch mal über ein Like eine Auswahl treffen will.

3. Gerade solche Nummern werden gerne in gut lesbaren Zifferngruppen dargestellt, dabei kann sich die Möglichkeit diese Formatierung auch abzuspeichern manches Mal als nützlich erweisen.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Ablage langer Zahlen

  Alt 11. Nov 2015, 18:51
3. Gerade solche Nummern werden gerne in gut lesbaren Zifferngruppen dargestellt, dabei kann sich die Möglichkeit diese Formatierung auch abzuspeichern manches Mal als nützlich erweisen.
Nein, immer so abspeichern, damit die Bedeutung erhalten bleibt (zur Not cleanen, falls das mit der Formatierung eingegeben wurde).

Beispiel IBAN
Code:
formatiert: DE32 3456 5643 4564 4543
speichern: DE323456564345644543
Bei einer Suche erfolgt der Zugriff einmalig auf diesen Char-Wert, dann hat man die interne ID und dann wird damit weiter gearbeitet.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 18:35 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