Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Оптимизация MySQL запросов.

Статус
В этой теме нельзя размещать новые ответы.

AlpHarD-GameS

Новичок
Здравствуйте. Нужен совет опытных скриптеров. Хочу узнать как правильно оптимизировать данные MySQL запросы:
Вот несколько примеров, как у меня на данный момент проходят некоторые важные функции..
Получение паспорта. Диалоги имени, фамилии, даты рождения, бла бла бла.. При закрытии последнего диалога, идет отсылка на сток для сохранения паспортных данных в БД:
stock Passport(playerid)
{
if(!PlayerLogged[playerid]) return 1;
new passdate[24];
new y,m,d;
getdate(y,m,d);
format(passdate, sizeof(passdate), "%d.%d.%d",d,m,y);
new databirth[24];
format(databirth, sizeof(databirth), "%d.%d.%d",PInfo[pPassDay],PInfo[pPassMonth],PInfo[pPassYear]);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pPassName`='%s',`pPassFam`='%s',`pDataBirth`='%s',`pAge`='%d',`pDataPassport`='%e'",
PInfo[pPassName],
PInfo[pPassFam],
databirth,
PInfo[pAge],
passdate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}

По такому же принципу работает получение мед. страховки, но права там, сохраняется только дата получения:
stock MedCard(playerid)
{
if(!PlayerLogged[playerid]) return 1;
new medcarddate[24];
new y,m,d;
getdate(y,m,d);
format(medcarddate, sizeof(medcarddate), "%d.%d.%d",d,m,y);
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pDataMedCard`='%s'",medcarddate);
mysql_function_query(MySQL, query, false,"","");
return 1;
}
Так же есть отдельный сток для сохранения денег. Для того что бы ровнять значение денег в HUD с значением из БД.
stock SaveMoney(playerid)
{
if(!PlayerLogged[playerid]) return 1;
if(GetPlayerMoney(playerid) != PInfo[pCash])
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PInfo[pCash]);
}
SavePlayer(playerid);
return 1;
}
Ну и естественно, куда же без него, сток сохранения данных в целом. Но который уже не содержит в себе данные паспорта и мед страховки..
stock SavePlayer(playerid)
{
if(!PlayerLogged[playerid]) return 1;
mysql_format(MySQL,query,512,"UPDATE `accounts` SET `pLevel`='%i',`pExp`='%i',`pSex`='%i',`pSkin`='%i',`pCash`='%d',`pHP`='%f',`pArmour`='%f',`pNat`='%i',`pState`='%i',`pPassport`='%d',`pMedCard`='%d'",
PInfo[pLevel],
PInfo[pExp],
PInfo[pSex],
PInfo[pSkin],
PInfo[pCash],
PInfo
PHP:
,
	PInfo[pArmour],
	PInfo[pNat],
	PInfo[pState],
	PInfo[pPassport],
	PInfo[pMedCard]);
	mysql_function_query(MySQL, query, false,"","");
	return 1;
}
[/SPOILER]
Как будет лучше записать всё это так, что бы количество обращений к БД снизить до минимума, а эффективность повысить?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу