Autor | Zpráva | ||
---|---|---|---|
zimmi Profil |
#1 · Zasláno: 12. 6. 2008, 21:50:30
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." ~ "; 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 |
#2 · Zasláno: 12. 6. 2008, 21:56:44 · Upravil/a: joe
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 |
#3 · Zasláno: 12. 6. 2008, 22:40:41
joe Stejný výsledek.
|
||
joe Profil |
#4 · Zasláno: 12. 6. 2008, 22:45:47
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 |
#5 · Zasláno: 12. 6. 2008, 23:12:34
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 |
#6 · Zasláno: 12. 6. 2008, 23:20:13
Joker
Můžu se zeptat, jak tedy vypadá správný zápis? :) |
||
Časová prodleva: 16 let
|
0