<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Aufw&#228;ndiges GROUPing vermeiden</title>
	<atom:link href="http://phpperformance.de/aufwaendiges-grouping-vermeiden/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/</link>
	<description>Optimierung und Tipps zur Beschleunigung von PHP und MySQL</description>
	<lastBuildDate>Tue, 01 May 2012 16:51:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Von: Erfolgreichster deutscher PHP Blog? &#124; PHP hates me - Der PHP Blog</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16477</link>
		<dc:creator>Erfolgreichster deutscher PHP Blog? &#124; PHP hates me - Der PHP Blog</dc:creator>
		<pubDate>Thu, 16 Oct 2008 06:06:30 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16477</guid>
		<description>[...] PHP Performance Blog - Rang 105128 [...]</description>
		<content:encoded><![CDATA[<p>[...] PHP Performance Blog &#8211; Rang 105128 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Alex</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16471</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 15 Oct 2008 14:43:15 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16471</guid>
		<description>Die Query habe ich nat&#252;rlich nicht mehr, da ich damals umdenken musste. Ich habe mir eben gedacht, dort vielleicht auf einen Bug gesto&#223;en zu haben.
Trotzdem danke.</description>
		<content:encoded><![CDATA[<p>Die Query habe ich nat&#252;rlich nicht mehr, da ich damals umdenken musste. Ich habe mir eben gedacht, dort vielleicht auf einen Bug gesto&#223;en zu haben.<br />
Trotzdem danke.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: GhostGambler</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16470</link>
		<dc:creator>GhostGambler</dc:creator>
		<pubDate>Wed, 15 Oct 2008 13:14:08 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16470</guid>
		<description>@Alex
Mach einfach einzelne COUNT-Queries...
Einen einzigen Monster-Join zu basteln ist auch nicht wirklich gut.

Wenn du unbedingt eine L&#246;sung zu deinem Query haben willst, musst du den mal posten.</description>
		<content:encoded><![CDATA[<p>@Alex<br />
Mach einfach einzelne COUNT-Queries&#8230;<br />
Einen einzigen Monster-Join zu basteln ist auch nicht wirklich gut.</p>
<p>Wenn du unbedingt eine L&#246;sung zu deinem Query haben willst, musst du den mal posten.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Alex</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16469</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 15 Oct 2008 10:31:22 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16469</guid>
		<description>Ich habe mal einen Benutzer aus der DB abgefragt und &#252;ber LEFT JONS die Anzahl seiner Bilder, Posts, Kommentare, Bewertungen etc &#252;ber jeweils einen LEFT JOIN mit einem COUNT(*) ermittelt. Komischerweise war die Anzahl Fotos gleich der Anzahl Kommentare wenn alle LEFT JOINS in der gleichen Abfrage waren. Habe ich die LEFT JOINS in der Abfrage testweise von 6 auf 2 reduziert, dann stimmten die Zahlen der einzelnen LEFT JOINS wieder. Daher meine Frage, ob sich viele LEFT JOINS in einer einzigen Abfrage irgendwie gegenseitig dazwischenfunken.
Die Beziehungen in der ON-Klausel waren alle richtig, denn wie falsch die Werte ermittelt wurden, hing auch davon ab, in welcher Reihenfolge die LEFT JOINS angewendet wurden.
Aber das ist vielleicht ein Thema f&#252;r ein Support-Forum, ich bin damals jedenfalls verzweifelt.

Zu SELECT *: da bin ich wieder beruhigt!</description>
		<content:encoded><![CDATA[<p>Ich habe mal einen Benutzer aus der DB abgefragt und &#252;ber LEFT JONS die Anzahl seiner Bilder, Posts, Kommentare, Bewertungen etc &#252;ber jeweils einen LEFT JOIN mit einem COUNT(*) ermittelt. Komischerweise war die Anzahl Fotos gleich der Anzahl Kommentare wenn alle LEFT JOINS in der gleichen Abfrage waren. Habe ich die LEFT JOINS in der Abfrage testweise von 6 auf 2 reduziert, dann stimmten die Zahlen der einzelnen LEFT JOINS wieder. Daher meine Frage, ob sich viele LEFT JOINS in einer einzigen Abfrage irgendwie gegenseitig dazwischenfunken.<br />
Die Beziehungen in der ON-Klausel waren alle richtig, denn wie falsch die Werte ermittelt wurden, hing auch davon ab, in welcher Reihenfolge die LEFT JOINS angewendet wurden.<br />
Aber das ist vielleicht ein Thema f&#252;r ein Support-Forum, ich bin damals jedenfalls verzweifelt.</p>
<p>Zu SELECT *: da bin ich wieder beruhigt!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: GhostGambler</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16468</link>
		<dc:creator>GhostGambler</dc:creator>
		<pubDate>Wed, 15 Oct 2008 10:05:14 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16468</guid>
		<description>Ach so, ja in sofern ist das dann mit den zwei Indizes korrekt.</description>
		<content:encoded><![CDATA[<p>Ach so, ja in sofern ist das dann mit den zwei Indizes korrekt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jan</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16467</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Wed, 15 Oct 2008 07:53:25 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16467</guid>
		<description>Die Frage mit den LEFT JOINs verstehe ich nicht ganz. Wenn Du mehrere LEFT JOINs nutzt und dann ein COUNT darauf ausf&#252;hrst, wirst Du eventuell Tupel erhalten, die gar nicht wirklich existieren (im Gegensatz zu INNER JOIN). Daher kann das COUNT(*) Werte ausspucken, die scheinbar falsch sind.

Zur zweiten Frage: Auf keinen Fall SELECT * verwenden! Ich meinte damit lediglich, dass die Datens&#228;tze gejoint werden. Zu diesem Zeitpunkt werden aber nur die IDs genutzt (PK). Die Nutzdaten werden erst sp&#228;ter ausgew&#228;hlt. Und au&#223;erdem w&#252;rden bei SELECT * unn&#246;tigerweise mehr Daten an PHP geschickt, was einen h&#246;heren Speicherbedarf zur Folge hat.</description>
		<content:encoded><![CDATA[<p>Die Frage mit den LEFT JOINs verstehe ich nicht ganz. Wenn Du mehrere LEFT JOINs nutzt und dann ein COUNT darauf ausf&#252;hrst, wirst Du eventuell Tupel erhalten, die gar nicht wirklich existieren (im Gegensatz zu INNER JOIN). Daher kann das COUNT(*) Werte ausspucken, die scheinbar falsch sind.</p>
<p>Zur zweiten Frage: Auf keinen Fall SELECT * verwenden! Ich meinte damit lediglich, dass die Datens&#228;tze gejoint werden. Zu diesem Zeitpunkt werden aber nur die IDs genutzt (PK). Die Nutzdaten werden erst sp&#228;ter ausgew&#228;hlt. Und au&#223;erdem w&#252;rden bei SELECT * unn&#246;tigerweise mehr Daten an PHP geschickt, was einen h&#246;heren Speicherbedarf zur Folge hat.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Alex</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16466</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 15 Oct 2008 07:24:20 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16466</guid>
		<description>Danke f&#252;r den Beitrag!
Ich bin auch der Verfechter der Methode, m&#246;glichst alle Daten au&#223;erhalb der Schleife zusammenstellen. Hierbei habe ich aber festgestellt, dass bei vielen LEFT JOINS (ich rede von 4-10) die &quot;dazugejointen&quot; Daten nicht mehr eindeutig sind. Also der 5te Left Join &#252;bernimmt schon mal den Wert vom vorhergehenden, insbesondere dann, wenn es ein COUNT() ist. Daher muss ich wieder in die Schleife ausweichen. Kommen die LEFT JOINS sich also gegenseitig in die Quere?

Eine weitere Frage wirft der Beitrag bei mir auf, Zitat: &quot;Problematisch anzusehen ist dabei auch die Ausf&#252;hrungsreihenfolge aller DBMS: Zuerst werden die Tabellen gejoint, anschlie&#223;end gruppiert und dann wird erst selektiert.&quot;
Hei&#223;t das etwa, dass man durch selektieren von ben&#246;tigten Feldern (statt SELECT *) keine Performance gewinnt, da sowieso alle Felder &quot;geholt&quot; werden? Das w&#252;rde mich jetzt doch interessieren.</description>
		<content:encoded><![CDATA[<p>Danke f&#252;r den Beitrag!<br />
Ich bin auch der Verfechter der Methode, m&#246;glichst alle Daten au&#223;erhalb der Schleife zusammenstellen. Hierbei habe ich aber festgestellt, dass bei vielen LEFT JOINS (ich rede von 4-10) die &#034;dazugejointen&#034; Daten nicht mehr eindeutig sind. Also der 5te Left Join &#252;bernimmt schon mal den Wert vom vorhergehenden, insbesondere dann, wenn es ein COUNT() ist. Daher muss ich wieder in die Schleife ausweichen. Kommen die LEFT JOINS sich also gegenseitig in die Quere?</p>
<p>Eine weitere Frage wirft der Beitrag bei mir auf, Zitat: &#034;Problematisch anzusehen ist dabei auch die Ausf&#252;hrungsreihenfolge aller DBMS: Zuerst werden die Tabellen gejoint, anschlie&#223;end gruppiert und dann wird erst selektiert.&#034;<br />
Hei&#223;t das etwa, dass man durch selektieren von ben&#246;tigten Feldern (statt SELECT *) keine Performance gewinnt, da sowieso alle Felder &#034;geholt&#034; werden? Das w&#252;rde mich jetzt doch interessieren.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jan</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16465</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Wed, 15 Oct 2008 06:08:34 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16465</guid>
		<description>&quot;F&#252;r jede Produkt-Tabelle ein eigener Index&quot;, damit meinte ich: Da Du durch den Self Join ja 2 mal die Tabelle Produkte in Deiner Query hast (produkte, pro2). Und dadurch k&#246;nnen ja 2 verschiedene Indizes benutzt werden.
Oder was ist das Geheimnis, weshalb dann keine tempor&#228;re Tabelle ben&#246;tigt wird?

Und zu den falschen Anf&#252;hrungszeichen: Das macht Wordpress leider so (die Blogsoftware hier). Ich denke es versteht jeder und es ist mir zu viel Aufwand Wordpress das abzugew&#246;hnen. Wenn jemand ein Plugin kennt, dass diese krummen Anf&#252;hrungszeichen in normale Hochkomas umwandelt, w&#252;rde ich mich &#252;ber eine Nachricht freuen.</description>
		<content:encoded><![CDATA[<p>&#034;F&#252;r jede Produkt-Tabelle ein eigener Index&#034;, damit meinte ich: Da Du durch den Self Join ja 2 mal die Tabelle Produkte in Deiner Query hast (produkte, pro2). Und dadurch k&#246;nnen ja 2 verschiedene Indizes benutzt werden.<br />
Oder was ist das Geheimnis, weshalb dann keine tempor&#228;re Tabelle ben&#246;tigt wird?</p>
<p>Und zu den falschen Anf&#252;hrungszeichen: Das macht WordPress leider so (die Blogsoftware hier). Ich denke es versteht jeder und es ist mir zu viel Aufwand WordPress das abzugew&#246;hnen. Wenn jemand ein Plugin kennt, dass diese krummen Anf&#252;hrungszeichen in normale Hochkomas umwandelt, w&#252;rde ich mich &#252;ber eine Nachricht freuen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: GhostGambler</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16464</link>
		<dc:creator>GhostGambler</dc:creator>
		<pubDate>Tue, 14 Oct 2008 19:07:12 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16464</guid>
		<description>&#220;brigens falsche einfache Anf&#252;hrungszeichen im Code
[&#039;b&#039;] statt [`b´]</description>
		<content:encoded><![CDATA[<p>&#220;brigens falsche einfache Anf&#252;hrungszeichen im Code<br />
['b'] statt [`b´]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: GhostGambler</title>
		<link>http://phpperformance.de/aufwaendiges-grouping-vermeiden/comment-page-1/#comment-16463</link>
		<dc:creator>GhostGambler</dc:creator>
		<pubDate>Tue, 14 Oct 2008 19:06:09 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/aufwaendiges-grouping-vermeiden/#comment-16463</guid>
		<description>Wie &quot;f&#252;r jede Produkte-Tabelle&quot;?

Bei vielen selektierten Spalten macht es nat&#252;rlich keinen Sinn einen riesigen Index auf alle Spalten der Tabelle zu legen. Da macht die Variante mit dem doppelten Join mehr Sinn.</description>
		<content:encoded><![CDATA[<p>Wie &#034;f&#252;r jede Produkte-Tabelle&#034;?</p>
<p>Bei vielen selektierten Spalten macht es nat&#252;rlich keinen Sinn einen riesigen Index auf alle Spalten der Tabelle zu legen. Da macht die Variante mit dem doppelten Join mehr Sinn.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

