Ответы пользователя по тегу MySQL
  • Каким образом реализовать поиск по словам с орфографическими ошибками?

    seriyPS
    @seriyPS
    https://habrahabr.ru/company/sphinx/blog/61807/ я вот такое прикручивал как-то давно
    Ответ написан
    Комментировать
  • Как быстрее выбрать изображения из БД (mysql php)?

    seriyPS
    @seriyPS
    Правильно понял, что вам нужно вывести на странице несколько лотов с картинками?
    Храните в 2-х таблицах и выбирайте 2-мя запросами, 2-й с id IN (...).
    В postgresql могли бы использовать array_agg + JOIN и выбирать всё одним запросом. Но тут тоже лучше бенчмаркать что лучше - 2 запроса или один, но с JOIN и аггрегацией.
    Ответ написан
    Комментировать
  • Как правильно делать MYSQL join и сортировку?

    seriyPS
    @seriyPS
    Вы бы запрос отформатировали поаккуратнее - читать неудобно

    SELECT hy_content.seo,
           hy_content.id,
           hy_content.date,
           hy_content.sham_photos,
           hy_content.title
    FROM hy_content
    LEFT JOIN gl_views ON (hy_content.seo=gl_views.seo)
    WHERE hide=2
          AND hy_content.date > (NOW() - INTERVAL 1 DAY)
    ORDER BY gl_views.read DESC
    LIMIT 10

    Запрос вполне нормальный, если вам нужно вывести именно новости, опубликованные сегодня, которые больше всего посмотрели (посмотрели за всё время, но т.к. всё время это и есть сегодня, то ок).
    Если же нужно именно "самые просматриваемые за сегодня новости, неважно когда опубликованные", то нужно структуру таблиц менять. Т.е. если новость вышла год назад, а на неё вдруг именно сегодня зашла толпа народу.
    Ответ написан
    1 комментарий
  • MySQL запрос из двух таблиц

    seriyPS
    @seriyPS
    Надеюсь эту картинку вы знаете?



    Допустим, таблица A это SELECT * FROM games, а таблица B это SELECT * FROM uploaded_games WHERE user_id = ?.

    Т.е. вам нужно из таблицы A вычесть таблицу B (в терминах теории множеств). На картинке это левый столбец, второй сверху.

    SELECT *
    FROM games as A
    LEFT JOIN uploaded_games as B ON (A.game_id = B.game_id)
    WHERE B.game_id is NULL AND B.user_id = ?
    


    Можно записать более наглядно, но, скорее всего, MySQL его не соптимизирует эффективно

    SELECT *
    FROM games
    WHERE game_id NOT IN (
      SELECT game_id FROM uploaded_games WHERE user_id = ?
    )
    
    Ответ написан
    Комментировать
  • Файл, являющийся отражением дампа БД MySQL?

    seriyPS
    @seriyPS
    Чё-то вы идиотское там делаете…

    Но вообще вам нужно fifo использовать
    что-то наподобие
    DUMP_FILE=/path/to/fifo
    mkfifo $DUMP_FILE
    while 1; do
        mysql_dump > $DUMP_FILE
    done
    

    Т.е. мусклдамп начнет отдавать данные только когда кто-то начнет читать из /path/to/fifo. Т.к. оно зациклено то при каждом чтении будет выдаваться новый дамп. Но я не уверен что mysql_dump не залочит БД сразу при запуске.
    Но лучше бы вам просто скрипт для дампа написать и не заниматься фигней.
    Ответ написан
    1 комментарий
  • mysql developer certification

    seriyPS
    @seriyPS
    Можно спрошу…

    А зачем вообще эти сертификаты нужны? Их кто-то спрашивает?
    Ответ написан
  • Стоит ли использовать Mongo?

    seriyPS
    @seriyPS
    Снова оффтопик:
    Вообще я дорабатывал тизерную сеть одну… Там нет таргетинга но нормально отрабатывало около 90 млн показов тизеров в сутки (сейчас обороты спали примерно до 50 млн). Все это крутится на одном единственном довольно мощном сервере (и второй сервер — только картинки).
    Там все данные о тизерах, забаненных айпишниках, ценой за показ/клик забираются из мемкеша. Если в мемкеше каких то данных почему-то нет (Eviction например или холодный старт), то только тогда забирается из БД и кладется сразу обратно в мемкеш. Статистика за последнюю минуту тоже кладется в мемкеш и раз в минуту данные из него собираются, обсчитываются и обобщенная статистика кладется в MySQL. Т.е. фактически для открутки тизеров БД вообще не трогается.
    (До мемкеша вообще использовали файловую систему для этих данных — летало почти так же как на мемкеше)

    Но вам может не подойти потому что не представляю толком как там можно таргетинг реализовать.
    Ответ написан
  • Стоит ли использовать Mongo?

    seriyPS
    @seriyPS
    Извиняюсь за оффтоп, но в ваших примерах вроде
    SELECT * FROM categories WHERE id IN (SELECT category_id FROM sites_categories WHERE site_id = SITE)
    JOIN принципиально не используется???

    А картинки попробуйте на Amazon хранить
    Ответ написан
    5 комментариев
  • Посоветуйте программу для моделирования БД MySQL под Ubuntu

    seriyPS
    @seriyPS
    Не, реально wb.mysql.com/ mysql Workbench вполне юзабельная штука. Заточен под мускуль, есть кодогенерация, автоматическая генерация Alter скриптов
    Ответ написан
    1 комментарий