Autor Zpráva
zimmi
Profil
Zdravím,
 $latest_comm="SELECT a.title, k.author, k.text, k.ID FROM texts a, comments k WHERE a.url=k.text ORDER BY k.ID DESC LIMIT 0,5";
  $result_latest_comm=mysql_query($latest_comm,$dbconn) or die(mysql_error());
  while ($r=mysql_fetch_array($result_latest_comm))
   {
    $nadpis1=$r['title'];
    $time=Date("j. n. Y v H.i", $r['time']);
    $autor1=$r["author"];
    $id1 = $r["ID"];
    $clanek1 = $r["text"];
    echo"<li>".$autor1."&nbsp;~&nbsp;";
    echo"<a href='/clanky/".$clanek1.".php#comm".$id1."'>".$nadpis1."</a><br>".$time."</li>\r\n";}


by měl ze 2 tabulek db vybrat na základě jedné stejné hodnoty 5 posledních komentářů. Místo toho mi vrací hlášku The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay. Skript ještě včera bez problému fungoval, podpora mi sdělila, že žádné nastavení neměnili, ale podivovali se, proč vybírám 100 000 řádků. To jsem se podivoval i já, poněvadž jich tolik ani nemám k dispozici :).
Je nějaký lepší způsob, jak tohle zapsat?
joe
Profil
zkus

SELECT a.title, k.author, k.text, k.ID FROM texts a LEFT JOIN comments k ON a.url=k.text ORDER BY k.ID DESC LIMIT 5
zimmi
Profil
joe Stejný výsledek.
joe
Profil
Tak není správně nakonfigurovaná mysql databáze.

Víc o stejném problému je třeba na adrese http://pkp.sfu.ca/support/forum/viewtopic.php?f=8&t=2844&p=10113
Joker
Profil
zimmi
podivovali se, proč vybírám 100 000 řádků. To jsem se podivoval i já, poněvadž jich tolik ani nemám k dispozici

SELECT a.title, k.author, k.text, k.ID FROM texts a, comments k
Jo, ono spojování tabulek není zas taková legrace ;-)

Vyrobit tabulku o 100 000 záznamech může být snazší, než se zdá. Při spojování tabulek se totiž vytvoří nová spojená tabulka a když se při spojení neuvede žádná podmínka, bude výsledkem kartézský součin a počet řádků bude součin počtu řádků těch spojovaných tabulek.
Takže stačí takhle spojit dvě tabulky se 400 a 250 řádky a dá to 100 000 jen to fikne.

To je přesně ten důvod, proč se doporučuje se nepodmíněným spojením tabulek vyhnout, pokud je to jen možné, a nikdy nedělat kartézský součin z víc než tří tabulek.
zimmi
Profil
Joker
Můžu se zeptat, jak tedy vypadá správný zápis? :)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0