php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.06.2010, 13:42  
Registrierer
Gast
 
Beiträge: n/a
Standard [Erledigt] Abfrage über 2 Tabellen dauert zu lange

Ich habe 2 Tabellen:
tab.rechnungsdetail enthält 130.000 Datensätze und
tab.rechnungen enthält 15.000.

Die folgende Abfrage überschreitet natürlich locker 60 sek. und führt zum Abbruch.
Wie könnte ich das optimieren?

Code:
$rechnungen_19 = mysql_query("
SELECT tab_rechnungen.RNR, 
SUM(tab_rechnungsdetails.VK_PREIS) AS NETTOSUMME, 
MWST FROM tab_rechnungsdetails
Inner Join tab_rechnungen ON tab_rechnungen.RNR = tab_rechnungsdetails.RNR 
WHERE tab_rechnungsdetails.MWST = '19'
AND tab_rechnungsdetails.VK_PREIS <> '0' 
AND tab_rechnungen.JAHR = '2010' 
AND tab_rechnungen.MONAT LIKE '5'
AND (tab_rechnungen.UEBERSCHR LIKE 'rechnung' 
OR tab_rechnungen.UEBERSCHR = '') 
ORDER BY tab_rechnungen.JAHR DESC, 
tab_rechnungen.MONAT DESC,
tab_rechnungen.LFDNR DESC") 
or die(mysql_error());
$summe_19 = mysql_fetch_array($rechnungen_19);
if ($summe_19['NETTOSUMME'] > '0')  {
  echo 'Nettoumsatz (ohne KV): '.number_format(round($summe_19['NETTOSUMME'],2), 2, ',', '.').' Euro<br>
  UST darauf: '.(number_format(round($summe_19['NETTOSUMME'],2), 2, ',', '.')*19/100).' Euro<br>';
}
edit: Hab mittlerweile rausgefunden, das die SUM Funktion den Datenstau verursacht.
Ich versuch die Daten in ein Araay zu packen und danach die Summe zu bilden.
Es sei denn, jemand hat eine bessere Idee?

Geändert von Registrierer (05.06.2010 um 13:59 Uhr).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.06.2010, 16:50  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Erster Schritt: EXPLAIN nutzen, und schauen, wo's hakt.
Zweiter Schritt: Sinnvolle Indexe setzen/ergänzen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 05.06.2010, 17:31  
Registrierer
Gast
 
Beiträge: n/a
Standard

Danke,

hätte in diesem Fall wohl nicht ausgereicht.
Ich hab es jetzt doch mit einem array gemacht, aus dem ich die Summe bilde.
Läuft fast in Echtzeit, trotz der großen Datenmengen.
Code:
$rechnungen_19 = mysql_query("
SELECT tab_rechnungen.RNR, 
tab_rechnungsdetails.VK_PREIS, 
MWST FROM tab_rechnungsdetails
Inner Join tab_rechnungen ON tab_rechnungen.RNR = tab_rechnungsdetails.RNR 
WHERE tab_rechnungsdetails.MWST = '19'
AND tab_rechnungsdetails.VK_PREIS <> '0' 
AND tab_rechnungen.JAHR = '2010' 
AND tab_rechnungen.MONAT LIKE '5'
AND (tab_rechnungen.UEBERSCHR LIKE 'rechnung' 
OR tab_rechnungen.UEBERSCHR = '') 
ORDER BY tab_rechnungen.JAHR DESC, 
tab_rechnungen.MONAT DESC,
tab_rechnungen.LFDNR DESC") 
or die(mysql_error());
while ($summe_19    = mysql_fetch_array($rechnungen_19))  {
  $arraysumme_19[]  = $summe_19['VK_PREIS'];
}
$nettosumme_19      = array_sum($arraysumme_19);
echo number_format($nettosumme_19, 2, ',', '.');
  Mit Zitat antworten
Alt 05.06.2010, 20:44  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
läuft fast in echtzeit, trotz der großen datenmengen.
wtf?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. 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
mySQL abfrage über mehrere Tabellen crustyroyal PHP Tipps 2010 3 23.04.2010 14:20
Abfrage über 2 Tabellen ragtek PHP Tipps 2010 4 14.04.2010 19:43
gelöst: Datenbankabfrage über 3 Tabellen lord_icon Datenbanken 0 12.10.2009 00:38
Abfrage über 2 Tabellen rassamee PHP Tipps 2009 10 02.08.2009 18:46
Scriptsuche [Erledigt] SQL- Abfrage über 2 tabellen ejim Scriptbörse 1 17.07.2009 21:10
sortierung einer Abfrage über 2 Tabellen mchacka Datenbanken 2 17.03.2009 17:55
MySQL Abfrage über 2 Tabellen Datenbanken 4 21.03.2006 11:44
Abfrage über zwei Tabellen (m. JOIN?) Spiff Datenbanken 3 13.02.2006 09:32
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
[Erledigt] MySQL Abfrage über mehrere Tabellen [Erledigt] Datenbanken 2 14.10.2005 13:37
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() Datenbanken 8 29.06.2005 04:15
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() PHP Tipps 2005-2 4 28.06.2005 07:47
Mysql Abfrage über 2 Tabellen mit Verknüpfung zuner 3. Datenbanken 2 26.10.2004 16:36
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql select über zwei tabellen braucht zulange, php zu lange abfrage, mysql query dauert zulange abbruch, php abfrage sum aus mehreren tabellen, datenbankabfrage dauert zu lange, mysql sum query lange, php datenbank abfragen dauern zu lange, mysql select join dauert zu lange, mysql abfrage dauert zu lange, mysql join dauert sehr lang, datenbank summe abfrage dauert zu lange, mysql sum dauert bei grossen abfragen zu lange, php abfrage dauert, php abfrage auf große sql tabelle dauert lange, number_format in sql abfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:23 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