Moin!
Indices? Was ist das?
Ist die Frage ernst gemeint? Wenn ja: Ein Index beschleunigt Datenbankabfragen dann enorm, wenn er korrekt gesetzt ist. Welchen Index man setzen sollte, ermittelt einem eine Abfrage mit vorangestelltem EXPLAIN, die den Ausführungsplan der SQL-Abfrage zurückgibt.
Das ist die Abfrage wie es jetzt ist:
select r.id, r.apfel, r.birne,r.banane,r.kiwi,r.kartoffel,s.status,z.zustand, r.obst, r.gemuese from obstkorb r,status s,zustand z where s.id = r.statusid and z.id = r.zustandid
Die Abfrage gefällt mir nicht. Explizite JOINs sind immer deutlich selbsterklärender, als implizite, erst recht bei 16 Tabellen.
Ich glaube auch immer noch nicht, dass eine Komplettabfrage über alle 16 Tabellen und alle Datensätze "zu lange" dauern sollte.
Unumgehbar ist allerdings, dass ein JOIN mit 16 Tabellen zwangsweise eine entsprechend lange Query-Formulierung zur Folge hat. Das kann man schlecht finden, aber verändern kann man es nicht.
Die csv Datei lasse ich so erstellen, vielleicht ist ja auch hier der Hund begraben:
while ($row = mysql_fetch_array($resOL))
{
$export = $export.$row["birne"].";".$row["banane"].";".$row["obst"].";".$row["gemuese"].";".$row["zustand"]."\n";}
$datei = fopen("tmp/export.csv", "w");
fwrite($datei, $export);
fclose($datei);
Auf jeden Fall ist festzustellen, dass du von den speziellen CSV-Dateifunktionen, die PHP bietet, noch nichts gehört hast, und es dir anscheinend auch lieber ist, erstmal den Speicher ordentlich mit Daten vollzumüllen, anstatt die DB-Ergebnisse schon direkt in eine Datei zu schreiben.
http://de3.php.net/fgetcsv
http://de3.php.net/fputcsv
- Sven Rautenberg