Задать вопрос
Ответы пользователя по тегу MySQL
  • Существуют ли стандарты написания сложных вложенных SQL запросов?

    @Draconian
    Oracle Developer
    В том, что запрос большой и в нем многабукаф ничего страшного нет, важно чтобы форматирование было единообразное, а если коллегам сложно понять, что запрос делает - пишите комментарии.
    Ответ написан
    Комментировать
  • Какой метод / формат для хранения данных при редком использовании?

    @Draconian
    Oracle Developer
    Если у вас приложение уже работает с MySql, почему бы не создать такие справочники там? Проще будет вносить изменения и т.д.
    Ответ написан
    Комментировать
  • Как отсутствие id (int - primary key, auto_increment) поля влияет на скорость работы MySQL?

    @Draconian
    Oracle Developer
    Принимая во внимание ответ выше, можно протестировать этот вариант на отдельном инстансе - убрать айди, сгенерировать хотя бы миллион строк, и поделать разные часто выполняемые запросы, всё будет понятно. Но проблем не должно быть никаких.
    К тому же, если у вас в этой таблице появятся десятки миллионов строк, скорее всего, придется задуматься о партицировании, оптимизации и т.д.
    Ответ написан
    1 комментарий
  • Как выполнить транслитерацию всего столбца в базе с большим количеством записей?

    @Draconian
    Oracle Developer
    Могу только добавить, что нет принципиальной разницы, каким способом это делать, но в скрипте можно сделать более объемную и сложную обработку поля title.
    Ответ написан
    Комментировать
  • Правильно ли я построил в MySQL Workbench ER-diagram?

    @Draconian
    Oracle Developer
    Если не поздно:
    Скорее всего, когда вам такое сказали, имели ввиду, что создавать отдельный айди для каждой сущности не всегда обязательно. Например, зачем уникальный айдишник для таблицы Department_and_Head_department? Никакой дополнительной информации в ней нет об этих связях. Тоже самое почти для всех таблиц связи.
    Часто достаточно иметь составной первичный ключ, например, серия+номер паспорта.
    Ответ написан
    2 комментария
  • Как правильно составить такой SQL-запрос?

    @Draconian
    Oracle Developer
    Задача нетривиальная, лучше всего написать процедуру.
    В Oracle есть функции PIVOT и UNPIVOT (транспонирование данных), у них есть имплементации для более древних версий в виде отдельных процедур, попробуйте копать в ту сторону.
    Да и вообще гуглите транспонирование в MySQL, например: buysql.com/mysql/14-how-to-automate-pivot-tables.html
    Ответ написан
    Комментировать
  • В чем лучше хранить данные для быстрого доступа?

    @Draconian
    Oracle Developer
    Есть подозрение, что нужно либо добавить индексы, либо проверить существующие, потому что выборки по индексированным полям должны выполняться очень быстро при таких размерах.

    В остальном, Walt Disney дал правильные советы: разделить эту таблицу на две - архивную (в идеале - партицированную) и оперативную, в которой хранить данные за определенный период, джобами по истечении срока перекидывать эти данные в архив.
    Можно еще дополнительно иметь "супер-оперативную" таблицу, в которой хранить необходимые вам уже агрегированные данные, которые обновлять триггерами после вставки информации в оперативную таблицу. Таким образом, после обновления оперативной таблицы, у вас уже будет вся аналитика за текущий период (день\неделю и т.д.).

    Что касается аналитики по архиву, из моего опыта, заказчик всегда просит оперативные, быстро работающие отчеты, и агрегированные отчеты по месяцам\годам из архива, которые лишь бы построились. :-)
    Ответ написан
    Комментировать