Евгений Вольф, Если с самого начала, то когда пользователь сохраняет текст из поля textarea - в базу данных сохраняется весь текст, но в самом поле не видны символы \n, при редактирвоании поля просто перенесена строка.
Дальше я получаю это поле из БД и хочу его сохранить в другом поле в JSON формате. В итоге в БД я вижу это:
Сохраняю json строку вот так:
$text = "Тут текст, который только что получили из БД. в нем есть переносы строк, которые сохранил пользователь из поля textarea";
$json = json_encode(
[
"text" => $text
]
);
$db->query("INSERT INTO `logs` (`text`) VALUES('{$json}')");
Размеры разные, но обработкой этих размеров занимается php.
Но у меня за месяц количество записей в таблице с изображениями выросло на 60тыс. А мы еще проект толком не запустили... До каких размеров может расти такая таблица?
Mikhail Kupriyanov, Да, но не в профиле конкретного пользователя, а в списке пользователей, например при поиске пользователей или просто при выводе списка пользователей.
Их может быть на странице, скажем, 20
Rsa97, Все-таки подзапрос это самый быстрый вариант:
56.028204917908 - Ваш запрос
29.229672193527 - Мой запрос с LEFT JOIN
0.054003000259399 - Запрос с подзапросом
Для всех тестов использовал SQL_NO_CACHE, один и тот же :user_id.
Количество пользователей в Users == 5млн (случайное заполнение)
Количество в таблице friends 1381 запись
Спасибо за отклик, но ваш запрос выводит не совсем то, что нужно...
Он выбирает таблицу friends и к ней присоединяет таблицу users. Таким способом можно вывести друзей, но для вывода друзей можно написать проще запрос.
Мне нужно получить именно пользователей, а статус дружбы нужен для того, чтобы знать какую кнопку отображать рядом с каждым пользователем
xmoonlight, Т.е. нужно использовать такую схему?
Каждый класс на бекенде знает о классе, скажем, requestData.
При обращении к любому из этих классов, мы создаем правило для всех переменных, которые этот класс поддерживает и отправляем эти правила в класс requestData. Исходя из этих правил, класс requestData обрабатывает переменные из глобальных массивов и сохраняет у себя в каком-то свойстве в виде массива, а мы потом просто запрашиваем их по принципу requestData->getParam('id');
Я правильно понял?
Но откуда фильтр в классе-хранилище будет знать о всех возможных параметрах которые будут передаваться и тем более о том, какие правила используются для каждого из них?
Получается для всех переменных, которые я принимаю в разных классах приложения, я должен описать правила в классе-хранилище?
Но ведь тогда нарушается принцип "каждый класс отвечает за свою область".
Один класс за проверку токена, другой за аутентификацию пользователя, третий за получение ролей пользователя.
У меня с этими правилами, на самом деле, всегда проблемы... Если делать постоянно следуя им - я упираюсь в кучу дополнительного кода и бОльшему количеству операций и вызовов всяких методов...
Как такового чистого JWT не получается, потому что все равно придется проверять в БД не нажал ли пользователь кнопку "выход".
Получается токен будет валидный до тех пор, пока не закончится его время существования.
Цель этого запроса вывести именно сообщества, которые имеются на сайте, но для того чтобы определить, какую кнопку пользователю показывать "вступить" или "покинуть" сообщество, требуется определить присутствует он в нем или нет.
Получается, вашим методом, мне нужно будет сначала получить данные о сообществах, а потом сделать запрос в базу, чтобы получить все сообщества в которых состоит пользователь, затем пробежать массивом по полученным сообществам и проверяя присутствует текущее сообщество в списке пользователя или нет, отмечать поле is_member соответственно....
Но если пользователь присуттсвует в нескольких тысячах сообществ? Получается, мне дополнительно нужно получить из БД несколько тысяч записей?
Мое решение вроде будет работать быстрее...
Да, действительно с трейтами получилось... Но насчет поддержки сложно сказать, например сейчас, я уверен, что метод работает одинаково для всех моих классов.
А если нужно будет изменить метод для нескольких классов (модулей), то трейты поддерживают наследование и переопределение методов, так что думаю не возникнет бед...
Спасибо и вас за помощь!
И добавлять в фабрику функции по мере необходимости. т.к. не все функии должен видеть пользователь в готовом js файле в switch