Autor | Zpráva | ||
---|---|---|---|
sdfsdfsdf Profil * |
#1 · Zasláno: 14. 5. 2011, 18:39:11
Zdravim, jde napriklad nejak tyto dva dotazy sloucit do jednoho?
$x1 = mysql_result(mysql_query("SELECT COUNT(*) FROM x WHERE a!=12"),0); $x2= mysql_result(mysql_query("SELECT COUNT(*) FROM x WHERE a=12"),0); |
||
Keeehi Profil |
#2 · Zasláno: 14. 5. 2011, 18:42:06 · Upravil/a: Keeehi
$x12 = mysql_result(mysql_query("SELECT COUNT(*) FROM x"),0); |
||
YoSarin Profil |
#3 · Zasláno: 14. 5. 2011, 18:55:05 · Upravil/a: YoSarin
Keeehi:
Tím ztratíš obě dvě informace (počet záznamů s a=12 i počet ostatních). Spíš by bylo potřeba něco jako: sdfsdfsdf: $result = mysql_query("SELECT COUNT(*) FROM x GROUP BY a=12;"); $x1 = mysql_result($result, 0); $x2 = mysql_result($result, 1); |
||
sdfsdfsdf Profil * |
#4 · Zasláno: 14. 5. 2011, 19:15:20
YoSarin dik funguje to, akorat jeste otazka. Je to vhodnejsi takhle, nebo na dva dotazy jak to mam ja?
|
||
YoSarin Profil |
#5 · Zasláno: 14. 5. 2011, 21:50:53
Já bych skoro řekl že u běžné aplikace je to jedno...
Jinak se mi osvědčilo, že většinou je rychlejší pokládat do DB více jednoduchých dotazů než jeden příliš složitý, ale zase to může být paměťově náročnější - záleží případ od případu. Zkusil jsem to nad tabulkou s cca 70mil řádků. Doba běhu spojeného dotazu byla 22 vteřin, u oddělených dotazů to bylo 11 a 11 vteřin. Takže prašť jako bouchni. |
||
Kajman_ Profil * |
#6 · Zasláno: 15. 5. 2011, 19:53:56
Pokud to je myisam tabulka, tak rychlejší by mohlo být
select c.pocet - a.pocet, a.pocet from (select count(*) pocet from x where a = 12) a join (select count(*) pocet from x) c Pokud tam jsou null hodnoty, tak to může vyjít jinak, než první příklad. |
||
Časová prodleva: 13 let
|
0