Ответы пользователя по тегу MySQL
  • Можно ли такое реализовать с помощью MySQL?

    Adamos
    @Adamos
    Если каждую платформу программист будет добавлять сам и полировать, можно выделить свойства аккаунтов в отдельные таблицы, собрав их общие поля в общую же таблицу:
    CREATE TABLE `accounts` (
      `id` int(10) UNSIGNED NOT NULL,
      `user_id` int(10) UNSIGNED NOT NULL,
      `title` varchar(255) NOT NULL,
      `morph_id` int(11) NOT NULL,
      `morph_type` enum('skype', 'tg') NOT NULL
    );
    
    CREATE TABLE `skype_accounts` (
      `id` int(10) UNSIGNED NOT NULL,
      `login` varchar(255) NOT NULL,
      `info` varchar(255) NOT NULL
    );
    
    CREATE TABLE `tg_accounts` (
      `id` int(10) UNSIGNED NOT NULL,
      `number` varchar(255) NOT NULL,
      `chat_id` varchar(255) NOT NULL
    );

    Позволит составлять достаточно сложные запросы, не убивая базу работой с JSON, и оптимизировать их индексами по соответствующим таблицам. Более того - для конкретной платформы можно будет естественно добавить еще таблицы, если будут какие-то специализированные данные (даты чатов только в телеге, ачивки только в стиме...) и работать с ними обычными запросами, без извращений.
    Ответ написан
    Комментировать
  • Как установить mysqlclient-коннектор для Python под Alt Linux?

    Adamos
    @Adamos
    https://www.linux.org.ru/forum/web-development/15613937 ?
    Там у ТС тоже джанга.
    А с Альтом надо ориентироваться все-таки не на Дебианы, а на что-нибудь красношапочное. Они использованием apt только сбивают народ с толку...
    Ответ написан
  • Как сделать вот такую сортировку?

    Adamos
    @Adamos
    Если я правильно понял, что должно получиться (группы выделены, но смешиваются, сортируясь по цене), то так, например:
    ORDER BY IF(FIELD(group_id, 10, 66) > 0, 0, 1), price DESC
    Ответ написан
    1 комментарий
  • Каким образом можно снизить нагрузку на MySQL базу данных?

    Adamos
    @Adamos
    при каждой итерации идёт обращение к ORM таблице городов, сравнивается описание города и если оно отличается происходит апдейт записи.

    Вообще-то для этого достаточно одного INSERT ... ON DUPLICATE KEY UPDATE.
    Ну, а массовая вставка по одной строчке - это верный способ убить БД на любых ресурсах независимо от движка сайта.
    Ответ написан
    Комментировать
  • Как правильно использовать PDO если несколько php скриптов?

    Adamos
    @Adamos
    Правильная работа с БД в РНР подразумевает, что вся работа с БД собрана в классы, а из скриптов дергаются только и исключительно методы этих классов. Никакого понятия о базе скрипты иметь вообще не должны.
    Ответ написан
    Комментировать
  • Как довести созданную БД до рабочего состояния?

    Adamos
    @Adamos
    + Простенькая база для ее бизнеса
    + Чтобы работала на смартфоне
    -------------------------------------------
    - Выкидываем написанное в вопросе
    - Забываем отвлеченные фантазии про БД и приложения
    + Читаем, что такое CRM
    Ответ написан
    Комментировать
  • Как создать базу данных и связать с PHP и MySQL?

    Adamos
    @Adamos
    Чтобы люди могли бросить контакты "и это сохранялось", достаточно прилепить на сайт бесплатный чат типа Talk-me и заглядывать в получаемые им сообщения. Например, настроив любой джаббер-клиент.
    Вообще ничего не программируя на самом сайте.
    Ответ написан
    Комментировать
  • Mysql постоянно отваливаеться, to many connection, connection refused, как оптимизировать?

    Adamos
    @Adamos
    Настройки - Настройки модулей - Монитор производительности.
    Ставишь логирование долгих запросов, запускаешь на достаточное время, чтобы их наловить. Копаешься.
    Например, сейчас ТП Битрикса просит меня подождать, пока ее жопоруки поправят код страницы штатной админки "Транзакции".
    На которой первый же запрос выбирает ВСЕ транзакции, забыв об имеющейся на странице (и используемой в дальнейших запросах) пагинации. Готовый, мать их так, магазин...
    Ответ написан
    Комментировать
  • Как исправить долгое выполнение запросов на большой таблице?

    Adamos
    @Adamos
    Только вчера чистил битриксовскую b_form_result_answer, где за пять лет набежало 10 миллионов записей.
    Как это сделано в Битриксе:
    - таблица result, где пишется, кто заполнил форму, и ее идентификатор
    - таблица списка полей формы по ее идентификатору
    - таблица заполненных полей с идентификатором поля и ответа
    Да, тоже неторопливо, когда нужно поискать что-то, потому что постоянно приходится джойнить.
    Но уж не JSON.

    А задача повторов, действительно, решается просто хэшем, о чем вам сразу специалист и сказал.
    Ответ написан
    1 комментарий
  • Как отобразить различный текст в зависимости от времени добавления данных в БД?

    Adamos
    @Adamos
    $DATEPOSTED = date("Y m d", strtotime("-1 day"));
    Но в результате этого конкретного кода по очевидным причинам всегда будет "Вчера".
    Ответ написан
    Комментировать
  • Экранирование sql запросов, достаточно ли функции?

    Adamos
    @Adamos
    Самописные "защиты от инъекций" вследствие непонимания автором того, что он вообще делает, обычно убивают двух зайцев сразу.
    И оставляют дыру в безопасности, и портят данные в базе.
    Для реальной защиты подготовленного запроса, как правило, достаточно. Но если очень постараться, дырку можно проделать и в нем.
    Ответ написан
    Комментировать
  • Mini pc как сервер MySQL?

    Adamos
    @Adamos
    Если у мини-писи есть модель, значит, он стоит как минимум вдвое дороже аналога, который можно собрать из комплектующих, начав с материнки формата mini-ITX.
    Вообще же поставленная задача более адекватно решается NAS-ом, если уж приспичило поиграться в крутое хранилище.
    Ответ написан
    Комментировать
  • Как сделать выборку между двумя датами?

    Adamos
    @Adamos
    Если вам нужны автомобили, которые выпускались в определенные годы, то вам нужно ИСКЛЮЧИТЬ те, которые ЗАКОНЧИЛИ выпускать ДО и те, которые НАЧАЛИ выпускать ПОСЛЕ. Всего лишь %)
    Ответ написан
    Комментировать
  • Какие есть современные веб-фреймворки для отображения данных из БД MYSQL?

    Adamos
    @Adamos
    Посмотрите на OctoberCMS / WinterCMS.
    Там как раз предполагается параллельно миграциям описывать в YML поля таблицы и тем самым получать страницу в админке для работы с ней.
    Ответ написан
    Комментировать
  • Как одним запросом удалить строки и сразу записать их в другую таблицу?

    Adamos
    @Adamos
    Записываете строки "в другую".
    Удаляете строки с условием "если есть в другой".
    Исчезает необходимость в "одним запросом" :)
    Ответ написан
    Комментировать
  • В каких ситуациях можно обойтись без плейсхолдеров в запросе?

    Adamos
    @Adamos
    Здесь уместна логика, как в анекдоте про бармена, который каждый день наливал проверяющему 90 грамм вместо заказаных ста. "Мне выгоднее тебе каждый день штраф платить, чем руку сбивать". Вот и программисту должно быть больно видеть приведенную конструкцию, а время, потраченное на рассуждения о том, безопасна она или нет, лучше потратить с большей пользой.
    Ответ написан
    6 комментариев
  • Как в mysql выбрать ближайшую бОльшую и ближайшую мЕньшую запись из базы в 1 запрос?

    Adamos
    @Adamos
    Самое нелепое в этом задании - что поле created_at не уникально, и в таблице может быть сколько угодно записей со временем, до секунды совпадающим с заданным. Что лишает всякого смысла предположения про "ближайшие большую и меньшую".
    Ответ написан
    Комментировать
  • Как составить запрос MYSQL чтобы посчитать разницу посещений за интервал времени?

    Adamos
    @Adamos
    SELECT id, разницу FROM таблицы JOIN с ней же ON t1.actor_id = t2.actor_id AND t1.date = нынче AND t2.date = вчерась
    Типа того
    Ответ написан
  • Как правильно составить запрос MYSQL INSERT INTO и UPDATE одновременно?

    Adamos
    @Adamos
    INSERT INTO `db_extra`(`actor_id`, `name`, `rusname`, `mod_f1`, `mod_f2`,`videos`) 
    VALUES (:model_id, :model_name, :model_rusname, :model_mod_f1, :model_mod_f2, :model_videos)
    ON DUPLICATE KEY UPDATE 
    `name` = VALUES(`name`), `rusname` = VALUES(`rusname`), `mod_f1` = VALUES(`mod_f1`), `mod_f2` = VALUES(`mod_f2`), `videos` = VALUES(`videos`)

    И, разумеется, не напрямую херачить строки в запрос, провоцируя SQL Injection, а использовать подготовленные выражения.
    Ответ написан
    Комментировать
  • Почему может тормозить простейший запрос?

    Adamos
    @Adamos Автор вопроса
    Уличная магия с полным ее... в общем, полным.
    У ТП хостера наконец дошли руки до моего тикета... и вдруг все заработало.
    Тот же самый запрос выполняется, как положено, за миллисекунды.
    В тех переменных, которые можно увидеть по SHOW VARIABLES, никаких изменений не произошло.
    Единственная зацепка насчет причин - на старом сервере был MySQL 5.6, на новом - 5.7.
    Впрочем, на сервере разработки у меня вообще MariaDB 8, и оно ему ни разу не мешало.

    Спасибо за участие, джентльмены. Это было что-то выше нас ;)

    P.S. График нагрузки у хостера через неделю. Явно видно, что конкретные запросы были ни при чем...
    63d39bbfe5996082650837.png
    Ответ написан
    Комментировать