php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.11.2004, 14:01  
Gast
 
Beiträge: n/a
Standard zu langsame Datenbankabfrage

Hallo,

ich bin grad am verzweifeln, weil meine Datenbankabfrage einfach viel zu langsam ist. Aber mal zu den Details:

ich habe eine Datenbank mit 2 Tabellen. In der ersten werden Filme gespeichert ind der zweiten Szenen, beide Tabellen sind über eine id verknüpftm, ganz normal also. Nun will ich es dem Nutzer erlauben nach Szenen zu suchen. dafür ahbe ich eine suchmaske mit 26 Feldern, die ausgefüllt werden können oder auch nicht. Nun möchte ich die Treffer ausgeben und das dauert und dauert und dauert ...

Wahrscheinlich ahbe ich einen Denkfehler. Ich geh halt für jedes Feld durch ob was drinsteht oder nicht. insgesamt hab ich dann sehr viele ineinander verschachtelte php-schleifen. mal ein kurzes Beispiel wie das in etwa aussieht für 2 Felder

if($feld1="empty")
{
if($feld2="empty")
{
abfrage
}
else
{
abfrage
}
}
else
{
if($feld2="empty")
{
abfrage
}
else
{
abfrage
}

}

also man sieht schon bei zwei Feldern ist es total verschachtelt, bei 26 komm ich so also auf etwa 170000 Quelltextzeilen. Das muss man doch irgendwie optimieren können? Bei dem Quelltext ist es ja kein Wunder, dass er sich nicht ausrödelt beim Suchen.

Aber ich steh halt auf dem Schlauch und weiss nicht, wie ich dass anders hinbekomme. Gibt es da Möglichkeiten in SQL vielleicht innhalb der anfrage zu verschachteln mit schleifen oder so. Wäre schön, wenn mir jemand helfen könnte. Ist sehr wichtig.

Danke schonmal.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.11.2004, 14:16  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

ähm du kannst doch einfach anstatt einer abfrage einen string machen der dann so etwas aussieht:

"feld2 LIKE '%$feldwert%' OR "

und dann am ende alle dieser string aneinanderhängen und dann haste den WHERE teil deiner abfrage und musst nur noch das letze überstehende OR entfernen
robo47 ist offline   Mit Zitat antworten
Alt 09.11.2004, 16:22  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

ehrlichgesagt solltest du bevor du sowas großes als projekt oder ähnliches realisieren willst erst nochmal bissel tutorials zu php lesen sowas:

http://de.php.net/manual/de/language.operators.php

http://de.php.net/manual/de/language...ors.string.php

oder mal komplett www.schattenbaum.net/php
robo47 ist offline   Mit Zitat antworten
Alt 09.11.2004, 16:24  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich würde die 26 Inputfelder im Formular, in denen du die Bedingungen eingibst, als Array definieren. Und die Namen der Attribute der Tabelle würde auch ich in einen Array schreiben, und zwar genau in der gleichen Reihenfolge, wie die Inputfelder. Nachher kannst du das ganze über eine Schleife abarbeiten. Hier eine kurze Skizze:
Auswahl:
PHP-Code:
echo "<form method='POST' action=...>\n";
echo 
"<table>\n";
echo 
"<tr><td>Regisseur:</td><td><input name='bedingung[]' /></td></tr>\n";
echo 
"<tr><td>Schauspiele:</td><td><input name='bedingung[]' /></td></tr>\n";
echo 
"<tr><td>Erscheinungsjahr:</td><td><input name='bedingung[]' /></td></tr>n";
//alle weiteren Bedingungen
... 
Auswertung:
PHP-Code:
$bedingung $_POST['bedingung'];
$felder = array('Regisseur''Schauspieler''Jahr', <alle weiteren Felder> ...);
$where 'WHERE 1 = 1';  // Nötig, falls keine andere Bedingung angegeben
for ($i 0;$i count($bedingung);$i ++)
{
      if (!empty(
$bedingung))
      {
             
$where .= " OR $felder[$i] like '% " $bedingung[$i] . "%'";
       }    
// Bedingungen definieren wie von robo47 erwähnt
}
//  Abfrage zusammensetzen
$sql "SELECT feld1, feld2, ...., feldx
                FROM tabelle
                $where"
;
echo 
"$sql 
"
// Fertige Abfrage für Tests ausgeben
$res mysql_query($sql) or die(mysql_error());
....   
// Daten ausgeben 
Auf die Art müsstest du in vernünftiger Zeit zu deinen Daten kommen.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
datenbankabfrage nach funktionsübergabe obi PHP Tipps 2007 9 13.04.2007 02:01
Datenbankabfrage mit variablen select-Auswahlfeldern tinchen PHP Tipps 2006 1 11.04.2006 10:40
Struktur der Datenbankabfrage tinchen PHP Tipps 2006 2 07.04.2006 13:35
Ergebnisse einer Datenbankabfrage in eine Function packen Plague PHP Tipps 2006 26 28.02.2006 11:13
Datenbankabfrage mit Formular PHP Tipps 2006 8 20.02.2006 13:52
Datenbankabfrage mit Eingabe des Benutzers PHP Tipps 2006 4 20.02.2006 10:27
problem bei distinct datenbankabfrage... Promaetheus Datenbanken 2 25.01.2006 17:28
Probleme bei Datenbankabfrage - blättern maccoder PHP Tipps 2005-2 2 23.10.2005 05:18
[Erledigt] 2 verschiedene Datum vergleichen - Datenbankabfrage Datenbanken 3 19.06.2005 10:29
datenbankabfrage faultier PHP Tipps 2005-2 10 13.06.2005 11:40
Datenbankabfrage Serverübergreifend PHP Tipps 2005 22 04.05.2005 12:42
Datenbankabfrage: Ergebnisse anzeigen PHP Tipps 2005 5 07.04.2005 10:31
Datenbankabfrage für Singlesuche ThaRider Datenbanken 6 27.03.2005 09:35
suche bestimmte Datenbankabfrage mit SUM() Datenbanken 4 21.01.2005 13:40
[Erledigt] Datenbankabfrage Datenbanken 4 30.10.2004 22:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
langsame datenbanken, datenbankabfragen sehr langsam, datenbankabfrage sehr langsam, datenbankabfrage php langsam, serverübergreifende db abfragen, datanbankabfrage like, suchmaske datenbank, datenbankabfrage bei vielen tabellen langsam, verschachtelte abfrage zu langsam, webseite langsame datenbankabfragen erkennen, jquery dynamisch datenbankergebnisse nachladen, datenbankabfrage rechnungsprogramm zu langsam, php und zu langsame datenbank abfrage, suchmaske datenbank abfrage, langsame datenbankabfrage, datenbankabfrage ineinander php, datenbankabfrage suchmaske php, php datenbankabfrage mit suchmaske, datenbankabfrage suchmaske mehrere felder, datenbankabfrage mehrere felder

Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.