| | | | |
| |||||||
| Datenbanken SQL und Co |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer | Das kommt immer drauf an, wo du bei der Normalisierung den Schnitt ansetzt. Ist ein Benutzer nur durch seinen Benutzernamen definiert? Gehört die ICQ-Adresse zum User direkt dazu oder ist das eine zusätzliche Entität? Aus praktischen Gesichtspunkten ist das relativ unerheblich, solange du nicht mit SELECT * arbeitest, was natürlich bei ganz vielen Datenfeldern auch viele holt, duie du gar nicht brauchst in einer Abfrage. Je nach Datenbanksystem macht es jedoch aus Performance-Sicht Sinn, insbesondere TEXT und BLOB Felder auszulagern, da diese meist auch in der Datenbank eine variable Größe haben und somit beim Zugriff auf Datensätze eventuell die Performance verschlechtern, selbst wenn du sie nicht selektierst.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Erfahrener Benutzer | Performance ist im Regelfall unerheblich bei konstanten Feldgrößen. Daher muss man die nicht zwangsläufig trennen. Auch eine Tabelle mit 40 Feldern bricht in der Performance nicht zwangsläufig ein, wenn die Felder selbst konstant groß sind (Ints, CHAR). Erst wenn Blobs und Texts hinzu kommen, wird manches DB-System langsamer. Ob spürbar oder nicht, kann ich dir nicht verraten. Auf jeden Fall brauchst du bei 40 oder 50 Feldern und 1000 Datensätzen solche Überlegungen auch nicht anstellen.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Erfahrener Benutzer | Es gibt keine eindeutige Antwort darauf.
__________________ www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih |
| | |
| | |
| Gast
Beiträge: n/a
| Vertikale Partitionierung von Tabellen kann schon sinnvoll sein, speziell wenn einige Spalten sehr häufig und andere selten benötigt werden und/oder sehr groß sind (z.B. BLOB, TEXT etc.). Eine Beispieltabelle, bei der Spalten die "oft" und "selten" verwendet werden, könnte so aussehen. Es existiert eine 1 zu 1 Verknüpfung des PRIMARY KEY. Code: CREATE TABLE tab_oft ( tab_id, col01, col02, [...] PRIMARY KEY (tab_id) ) CREATE TABLE tab_selten ( tab_id, col21, col22, [...] PRIMARY KEY (tab_id), FOREIGN KEY .. ON DELETE CASCADE ) Code: CREATE VIEW tab_alles
AS SELECT *
FROM tab_oft o
JOIN tab_selten s
ON s.tab_id = o.tab_id
Das Auftrennen verbessert die Lesegeschwindigkeit, wenn nur eine Tabelle (also nur ein Teil der Daten) gelesen werden muss. Daten in so eine "Tabelle" einfügen, ändern oder löschen kann komplizierter werden, wenn erst geprüft werden muss, welche Tabelle (oder beide Tabellen) betroffen sind. Beim Löschen hilft natürlich ein FOREIGN KEY mit ON DELETE CASCADE. Die Datenbank-Parameter (MySQL) auf dem Server (my.ini), sowie verfügbarer RAM, die IO-Geschwindigkeit der Platten etc. haben einen großen Einfluss auf die Geschwindigkeit. Grüße Thomas Geändert von thomas_w (19.03.2010 um 15:04 Uhr). Grund: Schreibfehler |
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) | dr.e. | Datenbanken | 4 | 15.06.2008 19:54 |
| MySQL in PHP integrieren (Windows 2003 Server ohne Apache) | Plague | Server, Hosting und Workstations | 3 | 30.08.2007 21:56 |
| Mysql Server Einstellunen Optimieren | pchero | Datenbanken | 3 | 01.05.2007 19:50 |
| MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers | FireFIghter | Datenbanken | 3 | 02.02.2007 17:18 |
| tutorial mysql klassen im oop projekt | phpdummi | Beitragsarchiv | 4 | 17.01.2007 20:17 |
| Ideen für Tageszeitung mit XML, MySQL, PHP gesucht | webazubi | PHP-Fortgeschrittene | 7 | 06.07.2006 12:25 |
| PHP 5.1.2 mySQL 5.0.19 MS-SQL 2005 IIS 6.0 | Shakaar | PHP-Fortgeschrittene | 10 | 26.03.2006 22:23 |
| [Erledigt] not allowed to connect to this MySQL server | PHP Tipps 2005-2 | 2 | 23.09.2005 18:34 | |
| MySQL & PHP: Problem mit Password() | Datenbanken | 10 | 19.09.2005 11:00 | |
| mysql_result(): supplied argument is not a valid MySQL | PHP Tipps 2005-2 | 4 | 25.08.2005 14:44 | |
| [Erledigt] MySQL Befehl für MySQL 4.0.24 | Datenbanken | 2 | 23.08.2005 17:35 | |
| Suche Tipps für Persormance-Steigerung (Geld für Nützliches) | Beitragsarchiv | 18 | 16.08.2005 10:57 | |
| MYSQL läuft nur wenn /tmp auf 777 | Datenbanken | 5 | 06.07.2005 08:38 | |
| mysql root passwort vergessen | Datenbanken | 1 | 29.05.2005 11:33 | |
| MySQL Erweiterungen nicht gefunden | Datenbanken | 4 | 27.08.2004 23:53 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| mysql 1:1 beziehung, mysql auslagern, mysql 1 zu 1 beziehung, 1 zu 1 beziehung sinnvoll, mysql 1:1 relation, php mysql verbindung auslagern, mysql datenbank auslagern, 1:1 beziehung, mysql 1 1 beziehung, mysql 1zu1 beziehung, 1 zu 1 beziehung mysql, datenbank 1:1 beziehung, 1:1 beziehung sinnvoll, foreign key sinnvoll, mysql tabelle auslagern, mysql daten auslagern, 1:1 beziehung mysql, mysql 1:1, mysql connect auslagern 2010, php mysql auslagern |