Datenbank Datenkomprimierung?
-
Folgendes:
Nehmen wir an ich habe eine Tabelle in einer Datenbank (Access), welche eine Spalte "Tabname" enthält die den Name der Tabelle enthält (wieso das so ist , ist mal egal:) ). Dieer kann 64byte lang sein
Wenn nun die Tabelle 5000 Datensätze hat, und im Feld "Tabname" immer der gleiche String drin steht, wie werden dann die daten gespeichert? ist die dantenbank so schlau das sie komprimiert? das wäre je quase 5000 mal 64bytes extra=..
Wie sieht es mit ner SQL querys aus, sind diese dann langsamer wenn eine Feld enthalten ist welcher einen langen string enthält ? Was ich nich glaube
-
BorisDieKlinge schrieb:
Folgendes:
Wenn nun die Tabelle 5000 Datensätze hat, und im Feld "Tabname" immer der gleiche String drin steht, wie werden dann die daten gespeichert?
sowas sollte nach einer ordentlichen Überarbeitung mit den mindestens ersten drei normalformen (datenbanktheorie) nicht passieren. gleiche datensätze sind in eine extra tabelle zu packen, und nur einmal abzuspeichern.
<unernst>darüber hinaus: access ist eine datenbank? ps: noch nichtmal ein datenbanksystem
:xmas1: </unernst>
-
ich sagte mal abgesehen das es unsin wäre 5000 gleiche Werte in einer spalte zu halten, würde mich interessieren wie Access dies Daten verwalten/komprimert!
@elise: Mir scheissegal ob das für dich ein datenbanksystem ist oder nich :xmas2:
ich will lediglich nur wissen ob in dem fall die daten irgendwie komprimiert werden
-
Da Suchabfragen dadurch verlangsamt werden, wird die DB wohl kaum komprimieren, ausser du forderst sie explizit dazu auf.
Und dass sie "erkennt" dass da 5000 mal der gleiche Datensatz drinnsteht, kann ich mir nicht vorstellen, das wuerde ein ziemliches Mass an zusaetzlichen Verwaltungsaufwand erfordern, sowas zu erkennen. Ausserdem ist der Benutzer selber schuld, wenn er die Datenbank so schlecht designt. Wie schon erwaehnt, in einem guten Datenbankdesign kommt sowas nicht vor, deswegen ist deine Frage schlichtweg nicht praxisrelevant.
-
Blue-Tiger schrieb:
Da Suchabfragen dadurch verlangsamt werden, wird die DB wohl kaum komprimieren, ausser du forderst sie explizit dazu auf.
MySQL kann das performancesteigernd bei Tabellen mit der MyISAM-StorageEngine; Details gibts in "High Performance MySQL".
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
es geht darum:
Habe Tabelle "foo" und Tabelle "bar" nun will ich eine UNION abfrage der beiden tabellen starten... damit in diese abfrage noch unterscheiden kann, ob ein datenazt zu Foo oder Bar gehört, hätte ich eine feld gebraucht das mit diese information liefert. Ich könnte natürlich sowa machen
Select * from (Select *, 0 as Type from foo UNION ALL Select *,1 as Type from bar)
aber da habe ich nun nir 0 oder 1 als unterscheiden , und nicht den namen;) auser jemand weis wie ich da den name reinbringen;)
danke und frohe weihnachten;) :xmas1: :xmas2:
-
Klar - wenn du dort sowieso eine Konstante übergibst, kannst du eintragen, was du willst
SELECT *, "foo" AS Type FROM foo UNION SELECT *, "bar" FROM bar
-
ja gut das weis ich CSToll, aber wie bekomme ich den name der tabelle dahin?
Hm stimmt, wenn ich den SQL string dynamisch aufbau ist das ja kein thema..stand wohl bischen aufm schlauch:)
danke jungs