Dein Weg zeigt noch nicht ganz die richtige Lösung an. Das Distinct filter aus der Datenbank jeweils nur einen Satz raus.
Folgt habe ich den Code jetzt umgestellt und es geht:
Code:
$sSQL = array();
$sSQL[] = "SELECT `name`, COUNT(`name`) AS anzahl FROM `Name` GROUP BY `name`";
$sSQL[] = "SELECT `zweitname` AS name, COUNT(`zweitname`) AS anzahl FROM `zweitername` GROUP BY `zweitname`";
$aNames = array();
for ($i = 0, $x = count($sSQL); $i < $x; $i++)
{
$rRes = mysql_query($sSQL);
while ($aName = mysql_fetch_assoc($rRes))
{
$sName = $aName['name'];
if (!isset($aNames[$sName])) $aNames[$sNames]=0;
$aNames[$sName]+=$aName['anzahl'];
}
}
foreach ($aNames as $sName => $iName)
{
printf("%s: %u\n
\n", $sName, $iName);
}
Derzeit habe ich ca. 3600 verschiedene Namen in der Datenbank stehen. Die Abfrage geht sehr schnell und der Speicher kommt auch noch nicht in gefährliche regionen. Ich sehe das Problem somit als gelöst an, weil ich nicht glaube, das noch sehr viel mehr Namen hinzukommen.
Danke.