Ответы пользователя по тегу MySQL
  • Много Update выстраиваются в очередь, как оптимизировать Mysql таблицу?

    @bohdan-shulha
    Да, попробуйте InnoDB и попробуйте обернуть запросы в транзакцию. Можно пробовать делать PREPARE, тоже даст долю ускорения.

    Как вариант, можно попробовать LOAD DATA (правда, он не всем и не всегда подходит): с INSERT работает молниеносно, с UPDATE - нужно пробовать, но скорость всё равно будет гораздо выше, чем просыми запросами.
    Ответ написан
    Комментировать
  • Почему в PHPMyAdmin запрос проходит а с PHP нет?

    @bohdan-shulha
    @aumarov
    все верно. Нужно заменить это ` на это '

    С какой такой радости? Там все символы на своих местах. ` используется для названий сущностей (таблицы, колонки, которые имеют в названии спецсимволы или их имя совпадает з какими либо зарезерврованными словами), а ' используется для строк.

    Попробуйте выполнить эти запросы отдельно.
    mysql_query("START TRANSACTION");
    $sql = "INSERT INTO `anime_long` (`aid`, `mal_id`, `MPAA`) VALUES (NULL, '6772', 'R - 17+ (violence & profanity)')";
    mysql_query($sql);
    $sql = "INSERT INTO `anime_short` (`aid`, `title_uk`, `title_en`, `title_rom`, `title_kan`, `title_others`, `poster`, `synopsis`, `type`, `series_count`, `date_begin`, `date_end`) VALUES (LAST_INSERT_ID(), '', 'Broken Blade', 'Break Blade 1: Kakusei no Toki', 'ブレイク ブレイド 覚醒ノ刻', 'Breaker Blade, Break Blade 1: The Time of Awakening', 'http://cdn.myanimelist.net/images/anime/3/18281l.jpg', 'In the continent of Cruzon, an impending war between the Kingdom of Krisna and the nation of Athens is brimming. The people of this land are able to use quartz for whatever purpose they desire. Yet one person, Rygart Arrow, is not. He is an \"un-sorcerer,\" a person unable to use quartz. But this characteristic will enable him to pilot an ancient Golem, one strong enough to put up a fight against the invading army of Athens.', '1', '1', '2010-05-29', '1970-01-01')";
    mysql_query($sql);
    mysql_query('COMMIT');


    В данном случае, транзакция используется исключительно из соображений производительности. По-хорошему, нужно проверять, удалось ли выполнить запросы и откатывать их (выполнять ROLLBACK), если что-то пошло не так.

    P.S.: почему используются mysql_*? Они же deprecated. Лучше брать mysqli_* или PDO (что я думаю предпочтительнее).
    Ответ написан
  • Как реализовать сложный (динамический) LEFT JOIN?

    @bohdan-shulha
    Первым приходит в голову использование GROUP_CONCAT, но я на более-менее больших базах с ним не работал, не знаю, как сильно он будет влиять на производительность.

    stackoverflow.com/questions/649802/how-to-pivot-a-...
    Ответ написан