AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mySQL-Schlüsselindex numerisch schneller, als alphanumerisch
Thema durchsuchen
Ansicht
Themen-Optionen

mySQL-Schlüsselindex numerisch schneller, als alphanumerisch

Ein Thema von Steffen · begonnen am 22. Jan 2004 · letzter Beitrag vom 26. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#1

mySQL-Schlüsselindex numerisch schneller, als alphanumerisch

  Alt 22. Jan 2004, 18:36
Hallo!

Ich überlege gerade, ob ein numerischer Schlüssel in einer mySQL-Tabelle besser ist, als ein alphanumerischer?
Ich habe eine Tabelle:

Delphi-Quellcode:
create table EMail
(MailID int,
From varchar(255) not null,
To varchar(255),
Subject varchar(255),
SendingTime DateTime,
MsgText varchar(4096),
MyID ->varchar(255) oder integer? <- not null,
primary key (MailID))
Kann jemand etwas darüber aussagen?

Wo ist eigentlich der Unterschied zwischen den Typen "char" und "varchar"?

Vielen Dank im Voraus,
Steffen
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 22. Jan 2004, 19:10
Zitat von Steffen:
Wo ist eigentlich der Unterschied zwischen den Typen "char" und "varchar"?

Ein CHAR(n) nimmt immer n+1 Bytes ein, während ein VARCHAR(n) bis zu n+1 Bytes einnimmt oder weniger, wenn nicht alle Zeichen belegt sind.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 22. Jan 2004, 19:18
Danke!

Ich habe gerade noch diese datailiertere Erklärung gefunden:

Zitat:
Die CHAR- und VARCHAR-Typen sind ähnlich, unterscheiden sich aber in der Art, wie sie gespeichert und abgerufen werden.

Die Länge einer CHAR-Spalte wird auf die Länge festgelegt, die Sie bei der Erzeugung der Tabelle angeben. Die Länge kann zwischen 1 und 255 variieren. (Ab MySQL-Version 3.23 kann die Länge zwischen 0 und 255 liegen.) Wenn CHAR-Werte gespeichert werden, werden sie am rechten Ende bis zur festgelegten Länge mit Leerzeichen aufgefüllt. Wenn CHAR-Werte abgerufen werden, werden die Leerzeichen am Ende entfernt.

Werte in VARCHAR-Spalten sind Zeichenketten variabler Länge. Sie können eine VARCHAR-Spalte mit jeder Länge zwischen 1 und 255 deklarieren, genau wie für CHAR-Spalten. Im Gegensatz zu CHAR werden VARCHAR-Werte jedoch nur mit so vielen Zeichen wie nötig gespeichert, plus 1 Byte, um die Länge zu speichern. Die Werte werden nicht aufgefüllt; statt dessen werden Leerzeichen am Ende beim Speichern entfernt. (Diese Entfernung von Leerzeichen weicht von der ANSI-SQL-Spezifikation ab.)

Wenn Sie einer CHAR- oder VARCHAR-Spalte einen Wert zuweisen, der die maximale Spaltenlänge überschreitet, wird der Wert so zurecht geschnitten, das er passt.

Die unten stehende Tabelle stellt die Unterschiede zwischen den beiden Spaltentypen dar, indem das Ergebnis der Speicherung unterschiedlicher Zeichenkettenwerte in CHAR(4)- und VARCHAR(4)-Spalten gezeigt wird:
Aber das hilft mir nun auch noch nicht bei meiner eigentlichen Frage...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 22. Jan 2004, 20:56
Ein Primärschlüssel sollte eigentlich immer numerisch sein.
Ich habe keine Ahnung wie das unter mySQL läuft, aber in Oracle definiere ich eine Sequence, die immer fleißig um 1 erhöht wird.
Um das ganze alphanumerisch zu lösen wäre ein viel höherer Aufwand nötig -> ars**langsam ...
Willst du, dass ein Feld oder eine Kombination mehrerer Felder eindeutig ist, solltest du eine Unique-constraint (keine Ahnung, wie das bei mySQL heißt) anlegen.
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 23. Jan 2004, 11:35
Unique-Constraints gibt es in mySQL ebenso, wie in Oracle.
  Mit Zitat antworten Zitat
jlanger

Registriert seit: 26. Jan 2004
Ort: Wittlich
15 Beiträge
 
#6

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 26. Jan 2004, 13:16
Integer ist der mit Abstand schnellstmögliche Index (alleine schon von der Prozessorverarbeitung her).
Und wenn jemand meint, er müsste aber Zeichenfogen im Index haben, genauer gesagt, in der Artikelnummer (so wie die blöde Textilindustrie), weil er sonst nicht alles unterscheiden kann, bzw. weil bei ihm die Datenmenge sooo riesig ist, dass das sonst schnell an seine Grenzen stösst, dem sei gesagt, dass bei Integer (ist in der Regel Int32) ein 32-bit Integer zur Verfügung steht, also 2 hoch 32 verschiedene Zahlen, das sind etwa 4,3 Billionen.
Jaaa, wird derjenige jetzt wohl sagen, bei uns kommen aber soo viele Datensätze rein...
Wenn jede Sekunde 1 Datensatz hinzukomt, dann reicht es über 100 Jahre!
Falls jemand dann rechthaberisch stottert "Jaa, aber es is wirklich irrsinnig viel bei uns."
Dann nehmt einfach ein Int64 (64bit Integer) und sagt ihm:
Falls Sie jede Sekunde 5 Millionen Datensätze hinzufügen, dann rufen Sie mich in 100 Jahren nochmal an, dann haben wir noch 16 Jahre Zeit um zu überlegen, was wir löschen können...

Noch Fragen Kienzle?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 26. Jan 2004, 13:23
Zitat von jlanger:
dass bei Integer (ist in der Regel Int32) ein 32-bit Integer zur Verfügung steht, also 2 hoch 32 verschiedene Zahlen, das sind etwa 4,3 Billionen.
Und es sind doch 4,2 Milliarden
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#8

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 26. Jan 2004, 13:30
Zitat von Chewie:
Zitat von jlanger:
dass bei Integer (ist in der Regel Int32) ein 32-bit Integer zur Verfügung steht, also 2 hoch 32 verschiedene Zahlen, das sind etwa 4,3 Billionen.
Und es sind doch 4,2 Milliarden
Krümelkacker!
Auf die Paar kommt nun wirklich nicht mehr an!
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
jlanger

Registriert seit: 26. Jan 2004
Ort: Wittlich
15 Beiträge
 
#9

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 26. Jan 2004, 13:56
Jou stimmt, lieber Milli Arden als gar keine Arden.
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#10

Re: mySQL-Schlüsselindex numerisch schneller, als alphanumer

  Alt 26. Jan 2004, 14:11
Das erinnert mich an einen Film... "Mach blöß keine 0 zu viel auf die Überweisung, das wird teuer!"

"OK, 1, 2, 3, ... 7, 8!"
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:07 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