Das Datenbankdesign ist doch ziemlicher Schrott. Am besten alles niederreißen und vernünftig aufbauen.
http://de.wikipedia.org/wiki/Normali...28Datenbank%29
Wie kann ich auslesen wieviel speicher eine Zeile belegt?
Collapse
X
-
Create Statement:
Alter-Table Statement:Code:CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `foreign_key_1` int(11) DEFAULT NULL, `foreign_key_2` int(11) DEFAULT NULL, `foreign_key_3` int(11) DEFAULT NULL, `enum_field_1` enum('option_1','option_2') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT 'option_1', `enum_field_2` enum('option_1','option_2') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `enum_field_3` enum('Keine Angabe','2002','2003','2004','2005', '2006','2007','2008','2009','2010') DEFAULT NULL, `enum_field_4` enum('option_1','option_2','option_3','option_4','option_5','option_6', 'option_7','option_8','option_9','option_10','option_11','option_12','option_13') DEFAULT NULL, `varchar_field_1` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_2` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_3` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_4` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_5` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_6` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `text_field_1` text CHARACTER SET latin1 COLLATE latin1_german1_ci, `varchar_field_7` varchar(255) DEFAULT NULL, `varchar_field_8` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_9` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_10` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_11` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `set_field_1` set('option_1','option_2','option_3','option_4') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `set_field_1` set('option_1','option_2','option_3','option_4') DEFAULT NULL, `text_field_2` text CHARACTER SET latin1 COLLATE latin1_german1_ci, `varchar_field_12` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `varchar_field_13` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `set_field_1` set('option_1','option_2') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `set_field_2` set('option_1','option_2','option_3','option_4') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `int_field_1` tinyint(4) DEFAULT NULL, `set_field_3` set('option_1','option_2','option_3','option_4','option_5','option_6') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `set_field_4` set('option_1','option_2') CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL, `text_field_3` text CHARACTER SET latin1 COLLATE latin1_german1_ci, `int_field_1` tinyint(4) DEFAULT NULL, `int_field_2` tinyint(4) DEFAULT NULL, `int_field_3` tinyint(4) DEFAULT NULL, `int_field_4` tinyint(4) DEFAULT NULL, `int_field_5` tinyint(4) DEFAULT NULL, `int_field_6` tinyint(4) DEFAULT NULL, `int_field_7` tinyint(4) DEFAULT NULL, `int_field_8` tinyint(4) DEFAULT NULL, `int_field_9` tinyint(4) DEFAULT NULL, `int_field_10` tinyint(4) DEFAULT NULL, `int_field_11` tinyint(4) DEFAULT NULL, `int_field_12` tinyint(4) DEFAULT NULL, `varchar_field_14` varchar(255) DEFAULT NULL, `status` tinyint(4) DEFAULT NULL COMMENT 'Status', `created` datetime DEFAULT NULL COMMENT 'Erstellt am', `created_by` int(11) DEFAULT NULL COMMENT 'Erstellt von', `modified` datetime DEFAULT NULL COMMENT 'Bearbeitet am', `modified_by` int(11) DEFAULT NULL COMMENT 'Bearbeitet von', PRIMARY KEY (`id`), UNIQUE KEY `uidx_varchar_field_14` (`varchar_field_14`) ) ENGINE=ndbcluster DEFAULT CHARSET=latin1
(War vorher ohne 2010).Code:ALTER TABLE `table` MODIFY COLUMN `enum_field_3` ENUM('Keine Angabe','2002','2003','2004','2005','2006','2007','2008','2009','2010');
Auch das dritte Textfeld wurde gekürzt, bei Textefeld 2 gibt es keine Text der so lang war /ist.Last edited by Lennynero; 12-01-2010, 14:59.
Leave a comment:
-
Wie lautete denn das ALTER TABLE Statement, was du abgesetzt hast und wie sieht das komplette CREATE TABLE Statement aus, welches du mit SHOW CREATE TABLE bekommst?
Amica
Leave a comment:
-
Nach einem "ALTER TABLE" (Änderung eines ENUM-Feldes) sind einige (nicht alle!) Textfelder einer Spalte auf 256 Zeichen gekürzt worden.
Es ist mir bisher noch nicht ersichtlich wo die Gemeinsamkeiten der beschnittenen Zeilen liegen und es ist ebenfalls erstaunlich, das ich wieder Texte die länger als 256 Zeichen sind reinschreiben kann.
Tabellentyp ist ndbcluster.
Leave a comment:
-
Du kannst mit DESCRIBE `table` die Spaltentypen herausfinden. Dann weißt du schon mal wie viel Speicher ein Datensatz maximal belegen kann.
Falls es Spalten mit variable breiten Typen geben, musst du den konkreten Datensatz herausziehen und analysieren.
Wofür soll das eigentlich gut sein? Warum willst du das wissen?
Leave a comment:
-
Wie kann ich auslesen wieviel speicher eine Zeile belegt?
Hi,
gibt es einen MySQL Befehl, mit dem ich auslesen kann wieviel Speicher eine Zeile belegt?
So etwa:
Gruss,Code:SELECT Memory(), id FROM table
MarkusTags: None
Leave a comment: