Ответы пользователя по тегу MySQL
  • Как в Navicat заставить периодически отправлять запросы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Навикат вообще-то не предназначен для этого. Это удобный менеджер запросов, таблиц и баз данных.
    А для периодических запросов, лучше сделать скрипт на любом языке программирования и отправлять этот запрос через службу расписания.
    Ответ написан
    1 комментарий
  • Почему не работает While?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Попробуйте всю программу заключить в begin..end, как-то так (скопипастил, не проверял)

    сreate procedure procedure1()
    begin
    set @goupNoLeft=0; -- ID группы
    set @goupNoRight=0; -- ID группы
    set @linePlace=" 4"; -- ряд
    set @placeStart = 1; -- стартовое место
    set @placeStop = 22; -- конечное место

    WHILE @placeStart <= @placeStop DO

    SET @placeStart = @placeStart + 1;
    END WHILE;
    end;
    Ответ написан
    Комментировать
  • Оптимизация Mysql. Типы данных. Правильно ли я понял?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В вашем случае вы пытаетесь оптимизировать место на диске и в памяти, что совсем не тоже самое, что оптимизировать скорость запросов.

    1) Столбцу необходимо указывать тот тип данных, который для него подходит, и не обязательно минимально возможный. Чтобы понять имеет ли смысл экономить место, нужно проанализировать ваши запросы - по каким именно столбцам происходит поиск - вот их оптимизировать в первую очередь. Если запросы не выполняют поиск по вашему текстовому полю, то особо нет разницы какой оно длины - строка будет найдена например по id primary кей. а прочитать 2 кб или 3 кб - разницы нет. То есть ВСЕ поля минимизировать для ускорения нет смысла, разве что для уменьшения памяти.

    2) sql не адресует биты, он все равно будет выделять минимально байт для хранения флага. enum не означает 2 байта, enum может означать список флагов, это вполне может быть и 1 байт со значениям 0 и 1. или 0,1,2. Зависит от базы.

    3) text - удобно, если вы не знаете точный размер. varchar хранится прямо в строке, text и blob хранит там ссылку, а сами данные хранятся отдельно. С точки зрения оптимизации памяти - текст выгоднее. С точки зрения скорости доступа к данным - varchar быстрее. Плюс по text нельзя индексировать.

    4) Если поле все время пустое, и вы сделали char0, то в памяти будет выделяться новая область каждый раз, когда вы в существующую строку но с пустым полем будете добавлять что-то в это поле. А если varchar(2000), то для всех существующих записей память будет выделена сразу при запуске mysql, и обновление будет происходить быстрее чем создание новой записи.

    5) varchar(2000) для всех значений. На случай если вы вдруг измените строку в таблице, и чтобы это место в памяти не "раздвигать", перемещая ВСЕ данные.
    Ответ написан
    Комментировать
  • Как в Windows модифицировать PATH для быстрого вызова exe-шников MySQL?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Свойства компьютера
    Advanced
    Environment variables
    Ищете в системных переменных PATH и добавляете туда нужные пути, разделяя их точкой с запятой.

    Порядок важен для двух моментов - и скорость поиска незначительно повысится, и если в двух разных каталогах будет один и тот же exe файл, выполнится тот, который стоит в PATH раньше.
    Ответ написан
    Комментировать
  • Как правильно сделать выборку?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Тот, кто создавал эту таблицу - рак. Категории пишутся иначе. Например в отдельных столбцах. Например в отдельных битах. Например флагами.
    В вашем случае можно конечно что-то типа
    selec t* from table where category ~ '%2% or category ~ '%3%'
    но это рак.
    Ответ написан
    7 комментариев
  • Правильный способ хранения текста и HTML-кода в базе MySQL?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Есть подозрение что в самой базе у вас таблицы не в UTF-8, поэтому символы и портятся.
    Никаких особых действий не нужно делать, в sql текст html хранится без проблем.
    Ответ написан
    Комментировать
  • Где и как держать большую базу данных?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Для начала, почему нельзя сделать несколько таблиц?
    Если старые данные нужно просто хранить, изредка почитывая, а основная активность - инсерт и работа с последними данными, то давно следовало бы подумать, как можно разделить данные.

    Можно помониторить, выяснить что именно нагружено больше всего - диск, память, сеть?
    Может просто настроить репликацию, и разделить запросы на два сервера?
    Ответ написан
    Комментировать
  • Как и что вы логируете в свои проектах?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Логин, logout (дата, время, IP),
    Активные действия, вызывающие изменения данных
    запросы в случае использования поиска
    да и система - неочень ясный момент, смотря что у вас за проект.

    А хранить в базе или файлах зависит от проекта. В случае простого лога для админов, проще файл. В случае последующего использования лога для статистики, или хотя бы, если его следует просматривать нескольким людям (например даже одному, но не сисадмину), можно в BD, даже сделать отчеты для просмотра логов по определенным критериям
    Ответ написан
    Комментировать
  • Как разобраться с командной строкой?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в Windows, если вы пишете какую-то команду, для выполнения будет происходить следующее:

    Попытка определить, это внутренняя команда командной строки или нет
    Попытка найти эту команду в текущем каталоге (в вашем случае в c:\users\User)
    Попытка найти эту команду в каталогах, перечисленных в переменной %PATH%

    что вам нужно сделать:
    найти, где лежит mysql.exe и добавить эту папку в переменную %PATH%
    можно это сделать глобально, в настройках виндовс, можно временно в командной строке, в виде
    PATH=%PATH%;<новый путь к папке с mysql.exe>

    Еще как вариант, можете просто зайти в папку с mysql.exe и выполнить вашу команду там.

    P.S. Еще важный вопрос, а вы вообще mysql установили на компьютер?
    Ответ написан
    8 комментариев
  • Как происходит поиск при select-e с несколькими условиями?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Все программирование основано на "ленивых проверках", то есть если a не совпало, b смотреть не будет.
    Простейшая оптимизация запросов - это в правильном порядке проставить проверки, чтобы в первую очередь проверяло самые легковесные, затем потяжелее.

    Например в простых запросах с несложной иерархией, если есть проверка числа и строки, первым проверять число, вторым строку. С другой стороны, в простых несложных структурах практически не бывает такой нагрузки, чтобы был смысл заморачиваться.
    Ответ написан
    1 комментарий
  • Два сайта в одном?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Почитать как организовать авторизацию по PHP, и для авторизированных пользователей отображать другое содержимое.
    Ответ написан
    Комментировать