Hallo!
Ich möchte folgende Abfrage mit MySQL machen:
$result = $mysqli->query("SELECT registration.registration, company.companyname, magazine.type FROM registration, company, magazine WHERE registration.registration = '{$_POST['book']}' AND magazine.registrationid = registration.registrationid AND company.companynumber = registration.companynumber");
Das Problem ist: Mein PC verarbeitet diese Anfrage nicht, obwohl sie korrekt formuliert zu sein scheint.
Es handelt sich um 3 Tabellen, von denen jede 500.000 Datensätze á ca. 7-10 Spalten hat.
Nicht nur über das php-Skript, sondern auch im SQL-Abfragefenster bei phpMyAdmin führt folgende Abfrage zu derselben andauernden 100% CPU-Auslastung:
SELECT
registration.registration, company.companyname, magazine.type
FROM
registration, company, magazine
WHERE
registration.registration = 'A12345'
AND
magazine.registrationid = registration.registrationid
AND
company.companynr = registration.companynr
Wenn ich zum Test diese einfache Abfrage aus einer der Tabellen mache (hat ja schließlich immerhin schon 500.000 Zeilen, dann funktioniert dies problemlos:
$result = $mysqli->query("SELECT registration.registration FROM registration WHERE registration.registration = '{$_POST['book']}'");
Der Rechner ist ein 2 GhZ mit 1 GB RAM. Das kann doch nicht die Kiste so überfordern?! Oder liegt es am PC, dass die tabellenübergreifende Suche nicht funktioniert?
Noch ein Hinweis: Ich führe die Abfrage nicht nach Primärschlüsseln aus, falls das hilft.
RegistrationID und Companynr sind ganz normale Tabellenspalten, die nicht als Primärschlüssel definiert sind.