Ответы пользователя по тегу MySQL
  • LOAD DATA INFILE, обновляются ли индексы?

    @zuborg
    Разумеется перестраиваются, если они активны (не использовалось alter table… disable keys).
    Другой вопрос, что их апдейт забирает ресурсы, и если для «очень быстро» индексы поотключать, а потом включить обратно — это повлечет за собой полный ребилд индексов, что может быть напряжно, если данных было очень много, а добавлено сравнительно мало.
    Ответ написан
    Комментировать
  • Какую программу использовать для резервного копирования MySQL большого объема без лока базы?

    @zuborg
    посмотрите ещё на Percona XtraBackup, может пригодится
    Ответ написан
    Комментировать
  • Уменьшение размера БД

    @zuborg
    Может сделать триггер на insert на основную таблицу, который будет копировать строку в архивную таблицу. delete соотв оставлять без внимания. update/replace — смотрите сами.
    Основные запросы делать на основную таблицу, а для отчетов — на архивную.
    Ответ написан
  • Вопрос по индексам MySQL?

    @zuborg
    Тут сложно сказать однозначно, есть разные взаимокомпенсирующие эффекты.
    С одной стороны, можно избавиться от ненужного больше поля с флагом — это плюс, с другой — придется добавить индекс по полю с таймстампом, которое занимает уже не один байт, как предыдущее — это минус (индекс будет большое занимать памяти). Сами индексы будут работать одинаково эффективно для указаной выборки.

    Я бы на Вашем месте создал бы тестовую табличку и сделал бы бенчмарк, заодно по результатам можно и статью на хабр отписать, многим было бы интересно.

    Также нетривиален вопрос выбора движка хранения, у innodb будет очень заметным оверхед по месту для хидеров строк, если структура таблицы очень простая и размер строки небольшой.

    Надо тестить, в общем…
    Ответ написан
    Комментировать
  • Используются ли в update запросах mysql индексы?

    @zuborg
    Используются, конечно, если условие where это позволяет.

    Индексы позволяют быстро сделать выборку нужных строк, а что с ними делать — апдейтить, удалять, отдавать клиенту или использовать в джойне — это уже дело десятое.

    Даже при инсерте для проверки уникальности значения поля нужен индекс.
    Ответ написан
    1 комментарий
  • Как сделать составной индекс для повторяющихся полей в where с and и or, mysql?

    @zuborg
    Для первого запроса надо два индекса, начинающиеся с name_last и name_first соотв. Т.к. используется OR — одного составного индекса будет недостаточно.

    Для второго запроса технически достаточно одного составного индекса из обеих полей, на практике же зависит от движка sql. Порядок не принципиален, но для производительности выборки желательно первым в индекс ставить поле с максимальной вариабельностью, т.е. то где больше разных вариантов значения.

    Итого, для обоих запросов надо два индекса — один составной из обоих полей, второй — из одного поля, которым заканчивается первый индекс:

    CREATE INDEX idx1 ON doctors (name_first, name_last)
    CREATE INDEX idx2 ON doctors (name_last)
    Ответ написан
    4 комментария
  • MyISAM vs InnoDB vs Что-нибудь

    @zuborg
    Скорее всего лучше себя будет вести InnoDB. MyISAM блокирует всю таблицу и годится только для неинтенсивного потока апдейтов.
    Ответ написан
    Комментировать