это чисто примерный запрос, но т.к. я в sql полный профан, прошу объяснить что в нем неверного.
Подскажите как можно снизить нагрузку и увеличить скорость запросов при условии оптимизированного кода и запросов.При условии оптимизированного кода и запросов нагрузка будет примерно никакой, так как у вас они судя по представленному explain ооочень далеки от "оптимизированных".
Онлайн порядка 500-1000 чел.
Для запаса я бы поднял количество соединений до 1/4 онлайна. Зависит конечно от специфики сайта, но иногда их реально не хватает если сервер с активным взаимодействием с бэкендом.выпадает ошибка ERROR 1 т.е. ошибка существования логина, хотя он есть"а вот тут ты не прав малой"(с), не ошибка существования логина, а пустой результат исполнения запроса. Что вызвано именно кривым запросом.
WHERE `title` LIKE '%".$query."%'
- уберите полный вайлдкард, LIKE '".$query."%'
будет работать быстрее и использовать индекс, в отличие от первого варианта. У вас же не нужно выбирать "Калининград" по "град".Вопрос - сколько правильно иметь колонок и строк и общий вес базы данных?Все зависит от задач. В личном блоге достаточно пару полей и 5-7 таблиц на все сущности. В больших проектах базы и под терабайт вполне бывают, количество полей может быть очень разным.
Далее добавил различные характеристики у user.Они нужны? Они относятся именно к юзеру? Значит все нормально.
Затем еще добавил логи входов (ip, дата)Это отдельная таблица, отдельная сущность и отдельная логика. Нужна - значит добавляете.
Боюсь логами забьется на сотни тысяч строк :)Пару миллионов строк для средней базы - вполне адекватный размер, если это не какой-то мусор, а что-то важное.
Так вот как мне лучше обновить элементы с новыми порядковыми номерами, если представить что в один момент могут это делать несколько пользователей. Что бы все не запуталось.что конкретно может запутаться? В вашем случае если все могут менять, то будет работать принцип "кто последний тот и папа", не зависимо от транзакций и прочей чехарды.
Как выполнит одним запросом несколько действий MYSQL?Никак, это разные запросы с разными таблицами и разными задачами.
для снижения нагрузки на базу данных.Неужели у вас уже более 1000 запросов в секунду и необходима срочная оптимизация?
$db->query("UPDATE score SET score = score + $klik push = push + 1 WHERE vk_id = $ids LIMIT 1");
$db->query("UPDATE score SET score = score + $klik push = push + 1 WHERE vk_id = $ids LIMIT 1");
во первых - не хватает запятых между присваиваниями, во вторых SET score = score + $klik*2, push = push + 2
вот вам минус 1 запрос. В третьих - вроде используете pdo, а переменные вставляете без prepared statements...Нужно получить resources_id, resources_name,Все или по какому то критерию?
select
`resources_id`,
`resources_name`
from `resources`
количество записей в таблице statistics относящиеся к resources (/resource/ ид ресурса)
select
count(*)
from `statistics`
where `statistics_url` = '/resource/resources_id'