Statistik  Mitglieder gesamt: 68142  Mitglieder online: 1  Gäste online: 0 mehr...
Anzeige
| Thread: [gelöst] Blätter funktion aus 2 DB gleichzeigt
 05.06.2008 10:41 Uhr
|
|
|
|
|
Servus,
ich benutze das script ausn Tutorial: http://www.cybton.com/tutorials_show,Bl_und_aumltterfunktion,0,tut,805.html PHP:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?
@mysql_connect("localhost", "root", "");
@$x=mysql_select_db("datenbank");
if (empty($x)) {
echo "Fehler beim Verbinden mit dem Datenbankserver<br>";
exit;
}
$pro_seite = 10;
$menge = mysql_query("SELECT * FROM tabelle");
$menge = mysql_num_rows($menge);
$seiten_anzahl = $menge / $pro_seite;
$page = $_GET['page'];
if (!isset($page) || !is_numeric($page) || $page > $seiten_anzahl || $page <= 0){
$page = 1;
}
$start = $page * $pro_seite - $pro_seite; |
so nun folgendes Problem:
ich habe eine DB mit new_messages und eine mit old_messages.
wie bekomme ich die blätter funktion nun hin?
ich habe es bislang so gelösst das ich ein betreich neue nachrichten und alte gemacht hab.
aber das isn bischle blöd wenn man 2 mal blättern muss einmal für neu und einmal für alte nachrichten.
Was denkt ihr wie kann man das lösen.
 2 mal bearbeitet
|
|
 05.06.2008 10:50 Uhr
|
|
|
|
|
Hi.
Sprichst du wirklich von zwei verschiedenen Datenbanken, oder meinst du nur zwei Tabellen?
Falls du von zwei Tabellen redest, würde ich dir raten, die beiden zu einer einzigen Tabelle zusammen zu fassen.
Ansonsten kannst du auch eine UNION-Abfrage machen, bei der tu die beiden ständig vereinen musst.
LG, bmk.
|
|
 05.06.2008 10:53 Uhr
|
|
|
|
|
öm ja tabllen ^^.
ich habe 2, denn auf das new greif ich per ajax drauf, soll halt schnell gehen und nicht serverlestig sein.
UNION-Abfrage sagt mir noch nix.
ich such mir das gliech raus wie das funkt :).
thanks
|
|
 05.06.2008 11:02 Uhr
|
|
|
|
|
Also wenn du nicht mehrere zehntausend Einträge hast, sollte eine einzige Spalte mit einem Flag, ob alt oder neu, keinen merkbaren Unterschied machen ;-)
|
|
 05.06.2008 11:17 Uhr
|
|
|
|
|
ich bin grad am lernen, meine lehrer sagen immer "voraussichtlich programmieren".
also an später denken, macht bei firmen eindrucken, chancen auf eine arbeitsstelle :)
|
|
 05.06.2008 13:56 Uhr
|
|
|
|
|
vorraussichtlich programmieren ja, nur stellt sich die frage, was sind die vorteile und was die nachteile von zwei b zw. einer tabelle?
1 Tabelle
Vorteile:
zentrale Ablage - mit nur einer Abfrage können alle Daten geladen werden - kein unnötiges Zusammenbasteln mit php.
Nachteile:
minimaler Geschwindigkeitsverlust, die Indizierung über eine Spalte erfolgt glaub ich so schnell, dass du da schon mehrere 100000 (vermutlich sogar noch mehr) Datensätze haben müsstest, dass das wirklich einen merklichen Unterschied bringt.
2 Tabellen
Vorteile:
etwas kürzere abfragen, vermutlich auch eine bessere Übersichtlichkeit (man kann die Datensätze leichter in der Tabelle finden)
Nachteile:
Datensätze müssen immer von neu nach alt geschoben werden, Daten müssen "umständlich" zusammengefügt werden
so, spontan seh ich da den Vorteil eindeutig bei einer Tabellen, aber vielleicht mag ich mich auch irren.
Vielleicht noch ne kleine Anmerkung: sobald mit mehr als einem JOIN gearbeitet wird, lohnt es sich dann schon möglichst kleine Tabellen zu haben, das hört sich bei dir aber nicht so an
|
|
 05.06.2008 14:50 Uhr
|
|
|
|
|
Also die Tabellendaten mit PHP zusammenschustern ist eine Sünde, wenn die Datenbank Joins kennt. Dein PHP-Skript läuft deutlich langsamer als ein Skript in der Datenbank. Zudem ist es nun einmal Usus das geplante Datenmodell zu normalisieren.
Deswegen das Query immer so formulieren, dass du so wenig wie möglich mit PHP oder was auch immer nachbessern musst.
Edit: Hoppala, glatt überlesen, dass du die Joins eh erwähnt hast.
 3 mal bearbeitet ___________________________ "Etre fort pour être utile" - Georges Hébert
|
|
 05.06.2008 16:37 Uhr
|
|
|
|
|
Zitat: sobald mit mehr als einem JOIN gearbeitet wird, lohnt es sich dann schon möglichst kleine Tabellen zu haben
Nicht unbedingt. Wenn ich die Daten einschränken kann (sei es im JOIN oder durch WHEREs), dann ist das genau so wenig Overhead wie ohne JOIN.
Der Optimizer baut die Query eh so um, dass sie zuerst jene Daten holt, die von der einen Tabelle benötigt werden, und erst dann die Daten mit der anderen Tabelle verknüpft. Ein EXPLAIN gibt hier wertvolle Auskunft.
LG, bmk.
|
|
 05.06.2008 19:17 Uhr
|
|
|
|
|
naja, ich hab das halt im praxistest festgestellt.
ich hab nämlich eine vertretungsplansoftware für schulen als webanwendung entwickelt und da haben wir festgestellt, dass die kombination aus (doppelte Anzahl an Einträgen = ca. doppelt so lange Dauer)5-7 joins in einer abfrage mit mehreren 1000 Datensätzen pro Tabelle das ganze doch erheblich langsam machen, was sich dann durch eine Tabelle mit ausschließlich neuen Einträgen doch erheblich verbessern ließ. Für die Statistik wird dann eine archivtabelle verwendet, in der alle einträge gespeichert sind (aus der mit den neuen werden alte einfach immer gelöscht). Aber das ist ja auch nicht umbedingt das, was man am Anfang von PHP und MySQL programmiert
|
|
 05.06.2008 19:18 Uhr
|
|
|
|
|
Wundert mich eigentlich. Hattet ihr vernünftige Indizies im Einsatz?
|
|
|