Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив или база? что будет быстрее? 
:(
    Опции темы
godsgame
  Дата 24.9.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 29.8.2005

Репутация: нет
Всего: нет



Итак делаю логи боев для онлайн игры.

файл со всеми вариантами логов занимает 40кб!

как мне лучше делать в игре:
1) загнать все в массив

a[1] = "aaa....";
a[2] = "bbb....';
....

Потом рандомно выбирать один из них и заносить в базу

ИЛИ

2) занести все эти шаблоны в базу:
id, logTemplate

1 aaa....
2 bbb....
3 ccc...

и каждый раз генерить число и выбирать соответствующий шаблон из базы



итак выводы:
1)
+: не нагружает базу, работает я думаю быстрее

минусы:
каждый раз при обновлении боя грузится массив на 40кб!


2)
+: файл боя весит на 40кб меньше!
-: дополнительные 15 запросов в базу (на странице 15 сообщений) (SELECT * FROM `logsTemp` WHERE id=123')


+ко всему этого: есть отдельный модуль для просмотра логов: 15 штук на странице (все выше написаное касалось непосредственно боя). Т.е хорошо бы учесть что люди будут просматривать завершенные логи...


Посоветуйте какоей вариант будет работать быстрее А ГЛАВНОЕ - создаст меньшую нагрузку на дохлый сервер. (можно предложить свой вариант)

PM MAIL   Вверх
Bikutoru
Дата 25.9.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



А заменить запросы типа
Код

(SELECT * FROM `logsTemp` WHERE id=123) x 15 штук

на
Код

(SELECT * FROM `logsTemp` WHERE id IN (123, 133, 145, 145, 678, ...)) x 1 штука

нельзя? Такие запросы (WHERE id IN (...)) выполняться будут достаточно быстро...

Цитата(godsgame @ 24.9.2005, 12:07)
+: файл боя весит на 40кб меньше!

Цитата(godsgame @ 24.9.2005, 12:07)
файл со всеми вариантами логов занимает 40кб!

Вот это не понял...


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
godsgame
Дата 25.9.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 29.8.2005

Репутация: нет
Всего: нет



Bikutoru
хммм...
а что значит IN?

думаю:
Цитата
(SELECT * FROM `logsTemp` WHERE id IN (123, 133, 145, 145, 678, ...)) x 1 штука

будет лучший вариант


Цитата

+: файл боя весит на 40кб меньше!

Цитата (godsgame @ 24.9.2005, 12:07)
файл со всеми вариантами логов занимает 40кб! 

Вот это не понял...



просто если делать массивом, то соответственно в бою будет так:
$a[1] = "takoj-to porazil takogo-to";
$a[2] = "takoj-to porazil takogo-to";
...

т.к файл с шаблонами этих логов занимает около 40кб, то соответственно при добавлении всех этих логов в массив $a - размер файла боя увеличится минимум на 40кб...



И еще такой вопрос: после выполнения SELECT * FROM `logsTemp` WHERE id IN (123, 133, 145, 145, 678, ...)) x 1 штука

результат можно занести в ассоциативный массив?
PM MAIL   Вверх
AntonioBanderaz
Дата 25.9.2005, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 18



Цитата(godsgame @ 25.9.2005, 16:37)
результат можно занести в ассоциативный массив?

Да конечно можно.
Код

$query = mysql_query("SELECT * FROM `logsTemp` WHERE id IN (123, 133, 145, 145, 678, ...)");
$assocArray = array();
while($row = mysql_fetch_assoc($query) {
      $assocArray[] = $row;
}



--------------------
ГЫ... 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.