| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |||
| Erfahrener Benutzer | Zitat:
PHP-Code: Und ich hab einfach ein paar bedenken dass die Abfragen dann etwas lange dauern könnten. Aber ich geb dir da voll rechte... Ich bedanke mich bei dir für das gute Beispiel und werde mich dann wieder an euch wenden wenn ich wirklich ein prob. habe. | ||
| | |
| | |
| Erfahrener Benutzer Registriert seit: 02.04.2008
Beiträge: 4.034
![]() | Da stellt sich nun mal die Frage, was diese 50 gleichen Tabellen sollen, ob man die nicht gleich in eine Tabelle schreiben kann. Und wenn das nicht geht, ob es nicht schneller ist, eine temporäre Tabelle zu erstellen, und diese abzufragen: PHP-Code:
__________________ Gruss L |
| | |
| | |
| Erfahrener Benutzer | Danke Ich hab das jetzt mal versucht... also die Seitenladezeit liegt immer so um die 0,5 sekunden. ich habe im Moment aber auch extrem übertrieben viele Einträge. normal kann pro abfrage nicht mehr als 50 Einträge gefunden werden. Im Moment frage ich 1200 Einträge ab. Ich werd da noch mal ein paar löschen um zu sehn wie sich das dann entwickelt. ich hab nicht so die Ahnung... sind 0,5 viel? |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich sehe auch keinen triftigen Grund, 50 Tabellen mit derselben Struktur zu verwenden. Da spricht doch nichts gegen eine gemeinsame, allenfalls mit einem zusätzlichen Feld, das mit in den Pimärschlüssel eingeht. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Hallo, du solltest versuchen die Tabellen zu einer zusammenzufassen und zur Unterscheidung eine neue Spalte einfuegen, zum Beispiel ENUM. Falls das nicht moeglich ist, kannst du dir entweder eine Prozedur, temporaere Tabelle oder einen VIEW erstellen. Ich persoenlich wuerde letzteres bevorzugen (aus dem Grund dass ich Prozeduren nur einsetzen wuerde wenn es nicht anders geht weil sie schwerer anzupassen sind; und temp. Tabellen weil ich damit keine Erfahrungen habe). Du wuerdest also einmal ein Statement dieser Art erstellen: Code: CREATE VIEW `all_tables` AS SELECT *, 'table_1' AS `from_table` FROM `table_1` UNION ALL SELECT *, 'table_2' AS `from_table` FROM `table_2` -- UNION ALL -- SELECT .. usw. Code: SELECT * FROM `all_tables` WHERE `status` = 2 -- AND .. Von schlechter Performance bei UNION habe ich noch nichts gehoert, bin dahingehend aber auch nicht belesen. Aber natuerlich lohnt es sich die Spalten nach denen du suchst zu indizieren. Verwechsel schlechte Performance der SQL-Abfrage uebrigens nicht mit der Performance-Einbusse die die Renderengine des Browsers bei der Darstellung sehr vieler Datensaetze hervorruft. Ich hatte bei meinem letzten "schweren Fall" mehrere tausend (10000-60000) Datensaetze, VIEWs, JOINs (insgesamt 30! in einem Query) und die Performance war trotzdem sehr akzeptabel (wenige Sekunden). Das Problem ist lediglich nur die Darstellung von ~100 Datensaetzen gleichzeitig. Fuer riesige Datenmengen ist der Browser einfach nicht das geeignete Medium. Setz also LIMIT oder bei SQL TOP ein und du solltest zunaechst auf der sicheren Seite sein. |
| | |
| | |
| Erfahrener Benutzer | Ich habe aus einem ganz einfachem Grund 50 Tabellen. Es geht hier einfach nur um die Serverbelastung. Z.B: Die abfrage von tabelle 1 wird mind. 20 mal so oft aufgerufen wie die von allen 50 auf einmal. kleine rechnung: SELECT * FROM tabelle1 = 750 Zeilen x20 aufrufe SELECT * FROM alle Tabellen = 50*750 Zeilen x1 Aufruf GESAMT (52.500 Zeilen) Das ist eine Beispiel von 1 Benutzer. somit müsste man für 1 Benutzer 52.500 Zeilen vergleichen. Jetzt wenn alles in einer ist: SELECT * FROM einer Tabelle = 750*50 (37.500 ZEILEN) x21 Aufrufe (787.500 ZEILEN) Man sieht an dem Beispiel ganz klar dass die Anzahl der Zeilen die überprüft werden oder abgerufen werden um ein vielfaches(15 faches) höher ist als bei der aktuellen Struktur. So kann ich mir sicher sein dass die am meisten aufgerufensten seiten (tabelle 1 bis tabelle 50) immer schnell geladen werden (weil nur 750 Einträge) und der Server schnelle abfragen machen kann. es ist zwar alles bischen umständlicher zu schreiben, dafür sind die häufigsten abfragen schneller. Bitte sagt mir falls ich da irgendwo einen denkfehler habe. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| abfrage auf gleiche Spalten aus zwei Tabellen | maeck | Datenbanken | 13 | 08.07.2008 10:09 |
| abfrage über mehrere tabellen mit einer bedingung | DarkThunder | PHP Tipps 2007 | 6 | 15.04.2007 17:13 |
| Abfrage über 3 Tabellen | madSoul | Datenbanken | 5 | 26.06.2006 12:25 |
| SQL ABfrage über mehrere Tabellen | Madden | Datenbanken | 17 | 09.05.2006 21:19 |
| Abfrage mehrerer Tabellen per PHP (Code vereinfachen) | PHP Tipps 2007 | 4 | 18.12.2005 12:34 | |
| [Erledigt] abfrage mehrere tabellen | PHP Tipps 2005-2 | 3 | 31.10.2005 21:57 | |
| Abfrage aller Tabellen über Schleife | PHP Tipps 2005-2 | 7 | 22.10.2005 12:16 | |
| problem bei ausgabe einer abfrage aus 2 Tabellen | Lia | PHP Tipps 2005-2 | 2 | 28.07.2005 17:30 |
| Abfrage aus zwei Tabellen | Datenbanken | 1 | 07.06.2005 13:47 | |
| [Erledigt] MySQL Abfrage aus mehreren Tabellen | Datenbanken | 1 | 12.04.2005 17:53 | |
| Abfrage Vergleich zweier Tabellen | MortakArtos | Datenbanken | 2 | 22.02.2005 16:02 |
| Abfrage über 3 Tabellen | Datenbanken | 3 | 20.09.2004 08:08 | |
| Abfrage zweier Tabellen funzt net richtig | Datenbanken | 1 | 17.09.2004 12:53 | |
| 2 Tabellen 1 Abfrage | nilsfeld | Datenbanken | 6 | 11.08.2004 11:18 |
| Abfrage über 3 Tabellen | PHP Tipps 2004 | 3 | 31.07.2004 22:34 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| sql mehrere datenbank gleichzeitig abfragen, http://www.php.de/datenbanken/45794-abfrage-mehrere-tabellen.html, schnelle sql abfrage über zwei tabellen, sql abfrage aus 3 tabellen erstellen, sql zwei tabellen gleichzeitig abfragen, 3 tabellen gleichzeitig abfragen und in arrays schreiben sql, sql insert 3 tabellen auf einmal |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.