Autor | Zpráva | ||
---|---|---|---|
Trsy Profil |
#1 · Zasláno: 23. 10. 2011, 11:19:41
Zdravím,
mám tabulku s 954 záznamy, když z ní však vybírám data, trvá to 3 vteřiny. Nějaké nápady, jak to urychlit? <?php $query = "SELECT parent FROM `permissions_inheritance` WHERE child = '".mysql_real_escape_string($jmeno)."' LIMIT 1"; $mysql = mysql_query($query); while($Vysledek = mysql_fetch_assoc($mysql)) { return $Vysledek["parent"]; } ?> |
||
shaggy Profil |
#2 · Zasláno: 23. 10. 2011, 11:25:08
Trsy:
„trvá to 3 vteřiny“ 3 sekundy? To kde je uložená tá databáza, na diskete? Ten tvoj select nemôže trvať tri sekundy, musí tam byť niečo iné, čo ťa brzdí. |
||
Trsy Profil |
#3 · Zasláno: 23. 10. 2011, 11:27:13
shaggy:
Určitě je to tím, když tento select odělám, proběhne script hned. |
||
Trsy Profil |
#4 · Zasláno: 23. 10. 2011, 11:32:37
Nevím, jestli to má vliv, ale databáze je na jiném serveru.
|
||
Mastodont Profil |
#5 · Zasláno: 23. 10. 2011, 11:38:16
while($Vysledek = mysql_fetch_assoc($mysql)) { return $Vysledek["parent"]; } Úžasná konstrukce, když tam je LIMIT 1, tak proč cyklus? |
||
Trsy Profil |
#6 · Zasláno: 23. 10. 2011, 11:49:44
Mastodont:
Opraveno, script to však nijak neurychlilo. |
||
CZechBoY Profil |
#7 · Zasláno: 23. 10. 2011, 12:00:29
když je databáze na jiným serveru bude to tím..
<?php $query = "SELECT parent FROM `permissions_inheritance` WHERE child = '".mysql_real_escape_string($jmeno)."' LIMIT 1"; $start=MicroTime(true); //nastavení počáteční hodnoty měření $mysql = mysql_query($query); $konec=MicroTime(true)-$start; $Vysledek = mysql_fetch_assoc($mysql)); return $Vysledek["parent"]; echo 'Query trvalo '.($konec*1000).'ms'; ?> kolik to vypíše milisekund? |
||
Kajman_ Profil * |
#8 · Zasláno: 23. 10. 2011, 17:06:24
Zkuste si ten dotaz i změřit i přímo na serveru s databází. Pokud je to pomalé, může to zrychlit vytvoření indexu na sloupci child (pokud tam tedy ještě není).
|
||
Časová prodleva: 14 let
|
0