php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-03-2009, 20:10
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Question JOIN mit 3 Tabellen

Hallo zusammen,

Ich habe ein Script in dem ich verschiedenste Tabellen mit while-Schleifen abfrage.
Also z.B. "Select knr from blabla"
Das Ergebnis habe ich dann in verschiedenen While Schleifen durch erneute Querys abgefragt.
Hat bisher geklappt, nur ich muss feststellen das es mit der Zeit etwas langsam geworden ist. Das sollte ich mal ändern

Nun habe ich das ganze mal mit JOINs versucht. Problem ist hier das das Script nun knapp 30 Sekunden benötigt. Ich bekomms nicht so ganz hin.
PHP-Code:
$sql  "SELECT kundenlogin.knr, kundenlogin.antrag, kundenlogin.benutzername, kundenlogin.password, kundenlogin.kategorie, kundenlogin.aktiv ";
$sql .= "FROM `kundenlogin` ";
$sql .= "LEFT join `tabelle1` ON tabelle1.knr = kundenlogin.knr ";
$sql .= "LEFT join `tabelle2` ON tabelle2.knr = kundenlogin.knr ";
$sql .= "WHERE `kundenlogin`.`knr` > 1000"
Die Tabelle 'Kundenlogin' hat jeweils eine unique KNR.

Diese 'KNR' (kann) in Tabelle1 ODER Tabelle2 gefunden werden.
Sind nur knapp 400 KNR in ca. 30.000 Datensätzen. Also nix besonders aufregendes.

Die Abfrage kann man doch sicherlich etwas verbessern, oder ??

Cu Susi
__________________
PHP 7.2, MySQL 5.7 auf U16.04

Geändert von SusiSorglos (09-03-2009 um 00:55 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 08-03-2009, 20:45
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Gut Entscheidung mit dem Join

Du wählst aber nur Attribute aus der Relation "kundenlogin" aus. Wozu machst du denn den Join überhaupt, wenn du garkeine Daten daraus haben willst? Liegt "knr" bei allen Tabellen auf dem Index?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-03-2009, 20:51
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Abfrage darfst Du nicht so ganz erst nehmen. Es geht mir ja erstmal nur um einen korrekten JOIN. Erstmal zählt das das läuft.

Im Kundelogin wird eine KNR durch AI generiert. Jenachdem was der Kunde macht, wird er in Tabelle1 oder Tabelle2 eingetragen.

Diese KNR wird aber jeweils nur 1 x in der jeweiligen Tabelle gefunden werden können (also unique). Den unterschuied zwischen Primärschlüssel, index und unique habe ich noch nicht so ganz verstanden. Aber ich bin bisher auch ganz gut ohne das Verständnis ausgekommen
__________________
PHP 7.2, MySQL 5.7 auf U16.04
Mit Zitat antworten
  #4 (permalink)  
Alt 08-03-2009, 20:56
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Ich darf den nich so ernst nehmen?

Also sorry, aber... dann zeig doch mal bitte ein konkretes Problem. Wenn dein Query 30 Sekunden dauert, du aber einen anderen Postest, können wir den der so lange dauert auch nicht gemeinsam optimieren, da ihn ja keiner Kennt.

Sind die Attribute "KNR" denn jeweils auf UNIQUE gesetzt? Das wäre ja ein Index. An deiner Stelle würd ich mich bzgl. Primary Key, Index und Unique auch mal schlau machen, das ist nämlich echt nützlich wenn man weiß wofür was gut ist.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #5 (permalink)  
Alt 08-03-2009, 21:20
php_fussel
 Newbie
Links : Onlinestatus : php_fussel ist offline
Registriert seit: Jan 2009
Beiträge: 120
php_fussel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
$sql .= "WHERE `kundenlogin`.`knr` > 1000";
... muss das so sein? Oder so ...

Zitat:
$sql .= "WHERE `kundenlogin.knr` > 1000";
Gruß php_fussel
Mit Zitat antworten
  #6 (permalink)  
Alt 08-03-2009, 23:18
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Nein, Ihre Schreibweise ist richtig. Bei deiner kommt sogar n Fehler weils das Attribut nicht gibt.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #7 (permalink)  
Alt 09-03-2009, 00:52
SusiSorglos
 Registrierter Benutzer
Links : Onlinestatus : SusiSorglos ist offline
Registriert seit: May 2007
Ort: Farfaraway 02203
Beiträge: 71
SusiSorglos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist wirklich schon der ganze Query.
Natürlich möchte ich noch weitere Spalten abfragen, nur das ist ja nicht das Problem.

Jetzt habe ich die Spalten KNR der Tabelle1 und Tabelle2 auf Primärschlüssel gesetzt... Und PMA sagt mir nun statt 26 Sekunden irgendwas von 0.003 Sekunden. Ich glaub das hat was gebracht.


Jetzt stricke ich mein ganzes Script um und bekomme jetzt die Probleme das ich für Tabelle1 und Tabelle2 die ausgelesenen Spalten mit einem AS versehen muss weil sie ja sonzt doppelt wären. Vielleicht geht es auch wieder anders. Aber ich bin jetzt erstmal damit zufrieden

@fussel
[klugscheiss]
'bla.blub' wäre EINE Spalte. Spalten dürfen aber meines Wissens keine Punkte enthalten. Da ein PUNKT die Spalte von der Tabelle trennt. Deshalb darf der Punkt nich mit in den Anführungszeichen stehen.
[/klugscheiss]
__________________
PHP 7.2, MySQL 5.7 auf U16.04
Mit Zitat antworten
  #8 (permalink)  
Alt 09-03-2009, 01:29
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von SusiSorglos
Jetzt habe ich die Spalten KNR der Tabelle1 und Tabelle2 auf Primärschlüssel gesetzt... Und PMA sagt mir nun statt 26 Sekunden irgendwas von 0.003 Sekunden. Ich glaub das hat was gebracht.
Dann vermute ich mal, es stand vorher nicht auf UNIQUE, hätte nämlich so ziemlich den gleichen Effekt gebracht. Wie gesagt, mal über Indizes schlaumachen, ist echt nützlich!
Zitat:
Original geschrieben von SusiSorglos
'bla.blub' wäre EINE Spalte. Spalten dürfen aber meines Wissens keine Punkte enthalten. Da ein PUNKT die Spalte von der Tabelle trennt. Deshalb darf der Punkt nich mit in den Anführungszeichen stehen.
Ack.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:44 Uhr.