<?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: Performanter Zufall &#8211; gibts das?</title>
	<atom:link href="http://phpperformance.de/performanter-zufall-gibts-das/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpperformance.de/performanter-zufall-gibts-das/</link>
	<description>Optimierung und Tipps zur Beschleunigung von PHP und MySQL</description>
	<lastBuildDate>Thu, 26 Jan 2012 23:01:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Von: Marko</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-31614</link>
		<dc:creator>Marko</dc:creator>
		<pubDate>Thu, 29 Apr 2010 13:02:09 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-31614</guid>
		<description>Hi,

bin grade durch google hier her gestolpert.
Soweit feine Ausf&#252;hrungen. Danke.

Wenn mal wieder jemand das Problem mit dem Trigger hat (auch &#252;ber 1 Jahr nach dem letzten Eintrag :-) dann sollte er das so machen:

Kurzform (ohne Test)
create trigger trg_ZIELTABELLE
before insert on ZIELTABELLE
for each row
SET NEW.RANDOM_SPALTE = rand();

sollte funktionieren, ohne Zwischentabelle</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>bin grade durch google hier her gestolpert.<br />
Soweit feine Ausf&#252;hrungen. Danke.</p>
<p>Wenn mal wieder jemand das Problem mit dem Trigger hat (auch &#252;ber 1 Jahr nach dem letzten Eintrag <img src='http://phpperformance.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  dann sollte er das so machen:</p>
<p>Kurzform (ohne Test)<br />
create trigger trg_ZIELTABELLE<br />
before insert on ZIELTABELLE<br />
for each row<br />
SET NEW.RANDOM_SPALTE = rand();</p>
<p>sollte funktionieren, ohne Zwischentabelle</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Fränzchen</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16967</link>
		<dc:creator>Fränzchen</dc:creator>
		<pubDate>Tue, 09 Dec 2008 08:08:51 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16967</guid>
		<description>Also, wer eine L&#246;sung mithilfe eines TRIGGERS (besonders geeignet f&#252;r Importe) anstrebt, macht das folgenderma&#223;en:

1. Anstelle des Feldes &quot;rand_value&quot; in &quot;tabelle&quot; wird eine neue Tabelle namens rand_table angelegt. Diese enth&#228;lt zwei Felder, ein Feld &quot;value&quot; (in dem alle Zufallswerte stehen) und ein Feld &quot;tab_ID&quot; (welches die jeweiligen ID der Datens&#228;tze aus &quot;tabelle&quot; enth&#228;lt).

2. Die Abfrage muss entsprechend angepasst werden:

SELECT artikelname 
FROM rand_table, tabelle 
JOIN (
  SELECT RAND() AS random 
  FROM tabelle 
  LIMIT 1
) AS randTable
WHERE rand_table.tab_ID = tabelle.ID
ORDER BY ABS(rand_table.value-random)
LIMIT 10;

3. Der TRIGGER wird wie folgt angelegt:

CREATE TRIGGER rand_trigger AFTER INSERT ON tabelle FOR EACH ROW INSERT INTO rand_table (tab_ID, value) VALUES ((SELECT MAX(ID) FROM tabelle), RAND())

Der Grund f&#252;r diesen etwas umst&#228;ndlichen Weg ist, dass ein Trigger nicht gleichzeitig auf eine Tabelle verweisen (AFTER INSERT ON tabelle) und die selbe Tabelle &#228;ndern (FOR EACH ROW UPDATE tabelle) darf.

Mit freundlichen Gr&#252;&#223;en
Franz&#039;l</description>
		<content:encoded><![CDATA[<p>Also, wer eine L&#246;sung mithilfe eines TRIGGERS (besonders geeignet f&#252;r Importe) anstrebt, macht das folgenderma&#223;en:</p>
<p>1. Anstelle des Feldes &#034;rand_value&#034; in &#034;tabelle&#034; wird eine neue Tabelle namens rand_table angelegt. Diese enth&#228;lt zwei Felder, ein Feld &#034;value&#034; (in dem alle Zufallswerte stehen) und ein Feld &#034;tab_ID&#034; (welches die jeweiligen ID der Datens&#228;tze aus &#034;tabelle&#034; enth&#228;lt).</p>
<p>2. Die Abfrage muss entsprechend angepasst werden:</p>
<p>SELECT artikelname<br />
FROM rand_table, tabelle<br />
JOIN (<br />
  SELECT RAND() AS random<br />
  FROM tabelle<br />
  LIMIT 1<br />
) AS randTable<br />
WHERE rand_table.tab_ID = tabelle.ID<br />
ORDER BY ABS(rand_table.value-random)<br />
LIMIT 10;</p>
<p>3. Der TRIGGER wird wie folgt angelegt:</p>
<p>CREATE TRIGGER rand_trigger AFTER INSERT ON tabelle FOR EACH ROW INSERT INTO rand_table (tab_ID, value) VALUES ((SELECT MAX(ID) FROM tabelle), RAND())</p>
<p>Der Grund f&#252;r diesen etwas umst&#228;ndlichen Weg ist, dass ein Trigger nicht gleichzeitig auf eine Tabelle verweisen (AFTER INSERT ON tabelle) und die selbe Tabelle &#228;ndern (FOR EACH ROW UPDATE tabelle) darf.</p>
<p>Mit freundlichen Gr&#252;&#223;en<br />
Franz&#039;l</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Fränzchen</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16942</link>
		<dc:creator>Fränzchen</dc:creator>
		<pubDate>Sat, 06 Dec 2008 13:44:20 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16942</guid>
		<description>achso... das hei&#223;t, ich kann innerhalb eines triggers keine zus&#228;tzliche abfrage auf die selbe tabelle starten, auf die sich auch der trigger bezieht... 

das ist nat&#252;rlich ein bisschen bescheiden!

die l&#246;sung w&#228;re demnach eine extra tabelle zu erstellen, auf die ich dann in meiner &quot;aufgaben&quot;-tabelle verweise!

mal sehen, ob&#039;s klappt! ich meld mich wieder...</description>
		<content:encoded><![CDATA[<p>achso&#8230; das hei&#223;t, ich kann innerhalb eines triggers keine zus&#228;tzliche abfrage auf die selbe tabelle starten, auf die sich auch der trigger bezieht&#8230; </p>
<p>das ist nat&#252;rlich ein bisschen bescheiden!</p>
<p>die l&#246;sung w&#228;re demnach eine extra tabelle zu erstellen, auf die ich dann in meiner &#034;aufgaben&#034;-tabelle verweise!</p>
<p>mal sehen, ob&#039;s klappt! ich meld mich wieder&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: GhostGambler</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16918</link>
		<dc:creator>GhostGambler</dc:creator>
		<pubDate>Fri, 05 Dec 2008 13:35:02 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16918</guid>
		<description>http://bugs.mysql.com/bug.php?id=15686</description>
		<content:encoded><![CDATA[<p><a href="http://bugs.mysql.com/bug.php?id=15686" rel="nofollow">http://bugs.mysql.com/bug.php?id=15686</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Fränzchen</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16896</link>
		<dc:creator>Fränzchen</dc:creator>
		<pubDate>Thu, 04 Dec 2008 19:54:15 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16896</guid>
		<description>Hab mich doch ein bisschen fr&#252;h gefreut... Bei jedem Versuch einen Datensatz einzuf&#252;gen, sei es manuell oder  per automatischen Import erhalte ich folgende Fehlermeldung:

MySQL meldet: 

#1442 - Can&#039;t update table &#039;aufgaben&#039; in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Der Trigger besteht jetzt in dieser Form:

DROP TRIGGER IF EXISTS `kompetenzcheck`.`rand_trigger`//
CREATE TRIGGER `kompetenzcheck`.`rand_trigger` AFTER INSERT ON `kompetenzcheck`.`aufgaben`
 FOR EACH ROW BEGIN
  UPDATE aufgaben
  SET rand_value=RAND()
  WHERE ID=NEW.ID;
END
//

Was ist noch falsch?</description>
		<content:encoded><![CDATA[<p>Hab mich doch ein bisschen fr&#252;h gefreut&#8230; Bei jedem Versuch einen Datensatz einzuf&#252;gen, sei es manuell oder  per automatischen Import erhalte ich folgende Fehlermeldung:</p>
<p>MySQL meldet: </p>
<p>#1442 &#8211; Can&#039;t update table &#039;aufgaben&#039; in stored function/trigger because it is already used by statement which invoked this stored function/trigger.</p>
<p>Der Trigger besteht jetzt in dieser Form:</p>
<p>DROP TRIGGER IF EXISTS `kompetenzcheck`.`rand_trigger`//<br />
CREATE TRIGGER `kompetenzcheck`.`rand_trigger` AFTER INSERT ON `kompetenzcheck`.`aufgaben`<br />
 FOR EACH ROW BEGIN<br />
  UPDATE aufgaben<br />
  SET rand_value=RAND()<br />
  WHERE ID=NEW.ID;<br />
END<br />
//</p>
<p>Was ist noch falsch?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Fränzchen</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16895</link>
		<dc:creator>Fränzchen</dc:creator>
		<pubDate>Thu, 04 Dec 2008 19:04:53 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16895</guid>
		<description>Hey, also die Syntax ist jetzt korrekt und wird auch von phpMyAdmin angenommen, WENN das standardm&#228;&#223;ige Semikolon als SQL-Zeilenbegrenzer in phpMyAdmin durch ein anderes Zeichen ersetzt wird (zum Beispiel ein Ausrufezeichen). 

Es ist ein wenig eigenartig, dass ausgerechnet ein Zeichen, was innerhalb einer SQL-Syntax eine gro&#223;e Rolle spielt, gleichzeitig als Zeilenbegrenzer eingesetzt wird....

Naja... das soll dich nicht weiter st&#246;ren! VIELEN DANK f&#252;r deine kompetenten und stets freundlichen Tipps, die du hier verteilst! :)</description>
		<content:encoded><![CDATA[<p>Hey, also die Syntax ist jetzt korrekt und wird auch von phpMyAdmin angenommen, WENN das standardm&#228;&#223;ige Semikolon als SQL-Zeilenbegrenzer in phpMyAdmin durch ein anderes Zeichen ersetzt wird (zum Beispiel ein Ausrufezeichen). </p>
<p>Es ist ein wenig eigenartig, dass ausgerechnet ein Zeichen, was innerhalb einer SQL-Syntax eine gro&#223;e Rolle spielt, gleichzeitig als Zeilenbegrenzer eingesetzt wird&#8230;.</p>
<p>Naja&#8230; das soll dich nicht weiter st&#246;ren! VIELEN DANK f&#252;r deine kompetenten und stets freundlichen Tipps, die du hier verteilst! <img src='http://phpperformance.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jan</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16894</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Thu, 04 Dec 2008 16:05:19 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16894</guid>
		<description>Upps, ich habs nochmal mit &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/de/create-trigger.html&quot; rel=&quot;nofollow&quot;&gt;der Dokumentation&lt;/a&gt; verglichen. Und da muss doch noch ein Semikolon hinter das UPDATE. Habs nun korrigiert. W&#252;rde mich freuen, wenn Du noch kurz sagst, obs nun geht.</description>
		<content:encoded><![CDATA[<p>Upps, ich habs nochmal mit <a href="http://dev.mysql.com/doc/refman/5.1/de/create-trigger.html" rel="nofollow">der Dokumentation</a> verglichen. Und da muss doch noch ein Semikolon hinter das UPDATE. Habs nun korrigiert. W&#252;rde mich freuen, wenn Du noch kurz sagst, obs nun geht.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Fränzchen</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-16890</link>
		<dc:creator>Fränzchen</dc:creator>
		<pubDate>Thu, 04 Dec 2008 15:39:03 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-16890</guid>
		<description>Hi

Der Zufall funktionert einwandfrei. Der Trigger allerdings nicht... M&#246;glicherweise mache ich aber auch einfach nur einen Fehler!

CREATE TRIGGER rand_trigger
AFTER INSERT ON aufgaben
FOR EACH ROW BEGIN
  UPDATE aufgaben 
  SET rand_value=RAND() 
  WHERE ID=NEW.ID
END;

Die Tabelle &quot;aufgaben&quot; besitzt zahlreiche Felder, darunter auch &quot;ID&quot; (Prim&#228;rschl&#252;ssel) und &quot;rand_value&quot;. Nun gebe ich die gesamte CREATE TRIGGER-Query in die SQL-Benutzerobefl&#228;che von phpMyAdmin ein. Ist doch korrekt oder?

Allerdings bekomme ich den Fehler #1064, in dem die Syntax um &quot;END&quot; als fehlerhaft beschrieben wird.

Warum?</description>
		<content:encoded><![CDATA[<p>Hi</p>
<p>Der Zufall funktionert einwandfrei. Der Trigger allerdings nicht&#8230; M&#246;glicherweise mache ich aber auch einfach nur einen Fehler!</p>
<p>CREATE TRIGGER rand_trigger<br />
AFTER INSERT ON aufgaben<br />
FOR EACH ROW BEGIN<br />
  UPDATE aufgaben<br />
  SET rand_value=RAND()<br />
  WHERE ID=NEW.ID<br />
END;</p>
<p>Die Tabelle &#034;aufgaben&#034; besitzt zahlreiche Felder, darunter auch &#034;ID&#034; (Prim&#228;rschl&#252;ssel) und &#034;rand_value&#034;. Nun gebe ich die gesamte CREATE TRIGGER-Query in die SQL-Benutzerobefl&#228;che von phpMyAdmin ein. Ist doch korrekt oder?</p>
<p>Allerdings bekomme ich den Fehler #1064, in dem die Syntax um &#034;END&#034; als fehlerhaft beschrieben wird.</p>
<p>Warum?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Jan</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-7439</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Sat, 26 Apr 2008 17:01:08 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-7439</guid>
		<description>Poste mal bitte Deine genaue Query - kann ihc mir n&#228;mlich eigentlich nicht vorstellen.</description>
		<content:encoded><![CDATA[<p>Poste mal bitte Deine genaue Query &#8211; kann ihc mir n&#228;mlich eigentlich nicht vorstellen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: handyaner</title>
		<link>http://phpperformance.de/performanter-zufall-gibts-das/comment-page-1/#comment-7435</link>
		<dc:creator>handyaner</dc:creator>
		<pubDate>Sat, 26 Apr 2008 15:24:51 +0000</pubDate>
		<guid isPermaLink="false">http://phpperformance.de/performanter-zufall-gibts-das/#comment-7435</guid>
		<description>hallo

habe nun mal das script angewendet. jedoch werden immer die selben ergebnisse angezeigt.

obwohl, die auswahl bei 500 eintr&#228;gen recht gro&#223; ist.</description>
		<content:encoded><![CDATA[<p>hallo</p>
<p>habe nun mal das script angewendet. jedoch werden immer die selben ergebnisse angezeigt.</p>
<p>obwohl, die auswahl bei 500 eintr&#228;gen recht gro&#223; ist.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

