Слишком большое время обработки php+sql
Здравствуйте, написал кодец, но время обработки у него 250+ ms ... проблемма в том, что каждых 100ms к нему за ответом обращается 'ajax'....надо php'шный код оптимизировать что-ли как-то...это реально тут сделать? Тупит из-за большого обьема БД...сейчас там 1500записей. Когда было 120 - не тупило(((
вобщем, помогите пожалуйста максимально оптимизировать код.. код: $userdat = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id='".$_POST["plid"]."'")); $count = 0; for ($y=$userdat["y"]-5; $y<=$userdat["y"]+5; $y++){ for ($x=$userdat["x"]-5; $x<=$userdat["x"]+5; $x++){ $data_map = mysql_fetch_assoc(mysql_query("SELECT * FROM map WHERE loc='".$userdat["loc"]."' AND x='".$x."' AND y='".$y."'")); if($data_map["img"]!="" && $data_map["img"]!=NULL){ if($_SESSION["x".$count]!=$data_map["img"]){ $map.="<d".$count.">".$data_map["img"]."</d".$count.">"; $_SESSION["x".$count]=$data_map["img"]; } }else{ if($_SESSION["x".$count]!="0"){ $map.="<d".$count.">0</d".$count.">"; $_SESSION["x".$count]="0"; } } $count+=1; } } |
индексы по полям x,y,loc расставил?
|
не имею понятия как это и что это, вот сейчас чту сижу...спасибо за наводку)
|
Ещё про join заодно почитай.
|
Возможно есть смысл сделать выборку из map одним запросом.
|
[sql]SELECT * FROM users RIGHT JOIN map ON map.y BEETWEEN users.y-5 AND users.y+5 AND map.x BEETWEEN users.x-5 AND users.x+5 WHERE id={$id} ORDER BY map.x, map.y[/sql] Что-то вроде этого, проверить не смогу.
|
:blink: хм, спасибо..ща буду чет колупать
|
проиндексировал....было так:
Код:
CREATE TABLE `map` ( Код:
CREATE TABLE `map` ( |
с учетом поправок B@rmaley.e><e, и subzey, данная таблица должна показывать хорошее время запроса.
если нет, то почему вы не написали, результаты нового тестирования? PS ваша база микроскопическая вообще-то. я бы посоветовал проверять на большой базе |
проверил на большой базе
в таблице 500.000 строк время обработки около 500ms ;) надо меньше 100ms ибо запросы на серв каждых 100мс поступают |
Часовой пояс GMT +3, время: 18:11. |