![]() |
2500 в цикле приложения? Тогда понятно. А для PHP 2500 иттераций не так уж и много. Хотя смотря какая база, какой хостинг и т. п.
|
Цитата:
|
Цитата:
|
Вложений: 1
Вот так выглядит кусок БД:
http://www.flasher.ru/forum/attachme...1&d=1371232000 Я формирую xml, через php: PHP код:
Дальше происходит множество различных операций, одна из которых получение из всей БД списка игроков. Для этого и необходим цикл из 2500 итераций, так как я заношу первое имя в список, а последующие уже заносятся, если такого имени еще не было. В качестве примера вот эта функция: Код AS3:
Я понимаю, что как то я не правильно делаю, что гружу всю БД, но я не понимаю как быть по другому. Решение разбивать пачками конечно есть, то ест цикл брать не 2500, а 5 циклов по 500 строк например, как говорил maincode, но это все таки как то не оптимально, да и наверно не везде получится применить. |
Что надо отображать за один раз то и надо дергать с сервера.
Добавлено через 3 минуты То есть можно определить интервал строк, выходя за который, идет запрос к серверу за порцией данных. |
Как же все запущено... scan по массиву вместо использования прямого отображения. И в результате вы имеете 2500*2500/2 операций вместо 2500. Используйте обычный map (оно же Object) с нужными ключами. Или два object'а (я особо не разбирался), оно на пару порядков быстрее работать будет. Может быть, оно и из базы правильно выбирается одним запросом, нужно понять что именно в результате вы хотите.
|
2 Fartoviy_Spec
А зачем вам тогда база данных, с таким подходом? Храните все данные в текстовом файлике. Результат будет абсолютно тот же самый. Но это сарказм, сорри. :) Сделайте несколько php-скриптов. Каждый из которых будет возвращать вам из вашей базы данных то, что нужно в определенный момент. Выборку же регулируйте через sql. Это мощнейший механизм, а вы его напрочь игнорируете. Например, для получения уникального списка игроков по двум колонкам, приведенным в примере: Код:
"select distinct * from (select pobeditel from ".$mysql_table." union select proigravshi from ".$mysql_table.") as p_table"Точно так же и с другими запросами. Не нужно нагружать клиента тем, что база сама сделает гораздо быстрее. А при том подходе, что у вас, подумайте - когда база дорастет до пары тройки гигабайт (а это вполне нормальный размер для базы), сколько времени будет тратиться на ее полную пересылку и обработку клиентом? |
Korchy, а зачем конкатенация в запросах?
Лично мне составление запросов в php тем и нравится, что переменные можно прямо в строки добавлять, без конкатенаций и лишних заморочек. Код:
"select distinct * from (select pobeditel from `$mysql_table` union select proigravshi from `$mysql_table`) as p_table" |
Цитата:
|
Понятно) значит я уже на тех, что не поддерживают не кодил
|
| Часовой пояс GMT +4, время: 09:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.