Kartensuche zu groß?

Hallo,
nachdem ich hier ein paar sehr gute Tipps bekommen habe, hab ich mich mal daran gemacht eine Kartensuche(Magic) zu schreiben. Funktioniert auch alles. Nur hab ich ein wenig Angst dass die Datenbank zu groß wird für eine Suche.

Also ich hab ne Tabelle mit 18 Spalten + einen Index erstellt. Da es ca 10000 Karten gibt, hab ich demnach zum Schluss 180000 Einträge(ich weiß nich ob der Index auch noch dazu zählt, aber is ja auch erst mal egal). Wenn ich jetzt nach mehreren Suchkriterien suchen will(z.B. Edition, Name und Farbe) dann muss er alle 10000 Zeilen durchsuchen(jeweils die Spalte halt, also bei der Edition eben nur die Spalte Edition).

Meine Frage jetzt: Wird das nicht ein bisschen zu groß? Ist die Suche dann nicht extrem langsam?

Und gibt es eine Möglich keit das ganze auch noch zu backuppen. Denn ich schreibe nicht 180000 Einträge und nachher werden die ausversehen gelöscht.

PS: Wenn es sich nicht aus dem Text ergibt: Ich habe das ganze mit PHP und MySQL geschrieben.
 
Es ist schon eine relativ große Angelegenheit,
wichtig dabei ist jetzt, wieviele Zugriffe in welchem Zeitraum gemacht werden.

Generell sollte dies aber nicht die Möglichkeiten von MySQL übersteigen, solange es nciht Tausende von Usern sind, die darauf zugreifen ;)


PS: Wenn es sich nicht aus dem Text ergibt: Ich habe das ganze mit PHP und MySQL geschrieben.

Irgendwie klar im PHP Forum ;)
 
Hi
Und gibt es eine Möglich keit das ganze auch noch zu backuppen. Denn ich schreibe nicht 180000 Einträge und nachher werden die ausversehen gelöscht.
Du kannst Dir über phpMyAdmin die vorhandene Tabellenstruktur + Daten in verschiedenen Formaten sichern lassen. Genauso einfach erfolgt auch das Wiedereinstellen der gesicherten Daten.

mfg, snuu
 
Ja das mit phpmyAdmin hab ich gewusst, aber ich hab auch gehört dass des nur mit kleinen Datenmengen geht. und 10000 sind ein bissl viel.

Generell sollte dies aber nicht die Möglichkeiten von MySQL übersteigen, solange es nciht Tausende von Usern sind, die darauf zugreifen

Das ganz sicher nicht. :-) Es werden höchstens 100 darauf zugreifen aber 100%ig nicht gleichzeitig.

Irgendwie klar im PHP Forum

:) Ja schon. Aber ich hab in andren Foren schon erlebt dass man richtig angehfahren wird, weil man nicht genau gesagt hat mit was oder von was man redet, obwohl es sich aus Text und Forenname eigentlich von selbst ergeben müsste.

Aber zu der Abfrage. Wie kann ich das denn am sinnvollsten machen? Also wenn ein User bspweiße nur name und edition eingibt, soll ich dann per if else auswählen nach was man die datenbank durchsuchen muss oder soll ich lieber (auch per if-else z.B.) abfragen was angegeben wurde und das alles mit .= in einen string speichern und mit mysql_db_query abfragen? Also alles nacheinander abfragen oder alles auf einmal in einem string(wenn das geht)?
 
Hi,

rufe um Gottes Willen nicht alle Datensätze ab und durchsuche diese dann PHP-seitig. Stelle Dir stattdessen in Äbhängigkeit der Filterkriterien ein SQL-Statement zu sammen und überlasse MySQL das Auffinden der relevanten Datensätze.

mfg, snuu
 
Stelle Dir stattdessen in Äbhängigkeit der Filterkriterien ein SQL-Statement zu sammen und überlasse MySQL das Auffinden der relevanten Datensätze

Könntest du mir das nochmal genauer erklären? Ich weiß nicht wie man Filter einbaut oder was ein SQL-Statement sein soll, aber es hört sich ganz nach etwas nützlichem an.

Oder ist das einfach das mit der Funktion mysql_db_query?

Also bspweiße:

$befehl = "select * from Magic where"

if(edition)
$befehl .= " edition == $eingabeedition"
if(name)
$befehl .= " and name == $eingabename"

$daten = mysql_db_query("MagicDB", $befehl);

....

Oder ist das etwas andres? (Der Code ist vielleicht nicht ganz korrekt oder besser gesagt er ist nicht ganz korrekt, aber das soll nur ein Beispiel sein.
 
Hi,

SQL-Statements sind einfach die Abfragen in der Form
"select Elefant from Afrika"
"Insert into .. "
"Delete from"
.. usw

Und je nachdem, was der Benutzer als Suchkriterien eingegen hat, baust Du Dir das SQL-Statement zusammen, das gleich die relevante Menge an Daten aus der Datenbank holt. Dein Ansatz ist vom Prinzip her richtig, nur würde ich LIKE-Klauseln im Where-Bereich verwenden, um mit Wildcards (%) arbeiten zu können. Außerdem würde ich die Groß- und Kleinschreibung vernachlässigen.

mfg, snuu
 
Zurück