MySQL запросы обрабатываются долго
#1

PHP код:
:):) 
Reply
#2

Логи времени выполнения запросов есть, или это беспочвенные обвинения и проблема окажется в вашем коде?
Reply
#3


Это норма?
Reply
#4

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Логи времени выполнения запросов есть, или это беспочвенные обвинения и проблема окажется в вашем коде?
например, в таком случае, текст "Запрос обработан" я получаю только через 5-10 секунд после отправки запроса:
PHP код:
mysql_function_query(cH"SELECT * FROM `accounts` WHERE `name` = 'PlayerName' LIMIT 1"true"Test""d"playerid); 
PHP код:
forward Test(playerid);
public 
Test(playerid)
{
    
SendClientMessage(playerid, -1"Запрос обработан");
    return 
true;

сервер не лагает. хостинг: ру-хостер

попробовал такой же запрос отправить на mysql сервер с другого самп сервера, запрос обработался мгновенно.
Reply
#5

Насколько я помню, логирование, которое в плагине, замедляет запросы (если логируется вообще все, а не только ошибки/предупреждения). Он у вас включен? Если да, то что именно логируется?
Reply
#6

Ошибки, предупреждения
Reply
#7

Quote:
Originally Posted by CamperGTA
Посмотреть сообщение

Это норма?
Это вообще ни как не связано с тем что я спросил.
Quote:
Originally Posted by CamperGTA
Посмотреть сообщение
например, в таком случае, текст "Запрос обработан" я получаю только через 5-10 секунд после отправки запроса:
PHP код:
mysql_function_query(cH"SELECT * FROM `accounts` WHERE `name` = 'PlayerName' LIMIT 1"true"Test""d"playerid); 
PHP код:
forward Test(playerid);
public 
Test(playerid)
{
    
SendClientMessage(playerid, -1"Запрос обработан");
    return 
true;

сервер не лагает. хостинг: ру-хостер

попробовал такой же запрос отправить на mysql сервер с другого самп сервера, запрос обработался мгновенно.
Время выполнения запроса и время вызова колбека это не одно и то же, в плагине есть ещё очередь запросов, которая может замедлять вызов.

Индексы в таблицах есть?
Reply
#8

индексов нет
Reply
#9

Ну вот и ответ)
Как думаешь, зачем нужно индексировать данные, когда их много? Нужно делать индексы, будет быстрее, ибо у тебя много данных в БД
Reply
#10

Quote:
Originally Posted by Daea
Посмотреть сообщение
Ну вот и ответ)
Как думаешь, зачем нужно индексировать данные, когда их много? Нужно делать индексы, будет быстрее, ибо у тебя много данных в БД
С индексами еще не доразобрался, можете помочь?
Как сделать индексы для таблицы аккаунтов? большинство запросов делаю через никнейм (WHERE `name`)
Reply
#11

А будет вот так:
Код:
UPDATE `accountz` SET `pAdmin` = '0' WHERE `ID` = '%d'
Где ID - индекс PRIMARY в БД, тем самым данное число уникальное. Дважды сделать ID, например, 2 - не получится
Reply
#12

Quote:
Originally Posted by Daea
Посмотреть сообщение
А будет вот так:
Код:
UPDATE `accountz` SET `pAdmin` = '0' WHERE `ID` = '%d'
Где ID - индекс PRIMARY в БД, тем самым данное число уникальное. Дважды сделать ID, например, 2 - не получится
auto_increment чтоли?
Reply
#13

Quote:
Originally Posted by CamperGTA
Посмотреть сообщение
С индексами еще не доразобрался, можете помочь?
Как сделать индексы для таблицы аккаунтов? большинство запросов делаю через никнейм (WHERE `name`)
Установи уникальный индекс на поле `name`.
Reply
#14

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Установи уникальный индекс на поле `name`.
Я правильно делаю?
PHP код:
ALTER TABLE  `tableADD INDEX (  `name` ) 
Reply
#15

Quote:
Originally Posted by CamperGTA
Посмотреть сообщение
Я правильно делаю?
PHP код:
ALTER TABLE  `tableADD INDEX (  `name` ) 
У вас что нет никакого клиентского приложения, типа phpmyadmina, для этого?
Reply
#16

Нет, на кнопку Уникальный.
Reply
#17

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Нет, на кнопку Уникальный.
Сделать уникальным походу не получится.
Ошибка:
PHP код:
#1062 - Duplicate entry 'Bek_Alfonso' for key 'name_2' 
т.к. я сделал систему аккаунтов чувствительным к регистру
эту проблему можно как-то решить?
Reply
#18

Тебе нужно указать полю параметр BINARY, поле станет регистрозависимым, тогда станет возможным включить уникальный индекс.
Reply
#19

ошибся, изменил тип поля на BINARY (а надо было указать атрибут BINARY), потом обратно в VARCHAR, после этого например запрос
PHP код:
SELECT FROM `accountsWHERE BINARY `name` = 'PlayerName' 
возвращает 0 строк, хотя запись с `name` = 'PlayerName' в таблице есть

что делать?
Reply
#20

Тип поля TEXT, кодировка utf8_general_ci, обращаюсь к полю учитывая регистр подобными запросами
PHP код:
SELECT FROM `tableWHERE `nameLIKE BINARY '%e' 
без регистра
PHP код:
SELECT FROM `tableWHERE `nameLIKE '%e' 
можно добавить LIMIT, чтоб после 1-ого найденного совпадения далее не искало
PHP код:
SELECT FROM `tableWHERE `nameLIKE BINARY '%e' LIMIT 1 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)