Ответы пользователя по тегу MySQL
  • MySQL и память

    @nmike
    Вообще, если используете только иннодб, память там сьедается файлом буфера данных-его принято выставлять до80% от доступной оперативной — innodb_buffer_pool_size. В нем храниться страницы с данными и индексами, что бы не лазить лишний раз на медленный диск, а обращаться всегда к оперативке.
    А все остальные буфера-это крохи по сравнению с этим(если конечно мы говорим о сервере с гигами оперативки:) )
    Ответ написан
    1 комментарий
  • Сложный запрос к БД

    @nmike
    ну вот если хочется поизвращаться :)

    SET @place := 0, @map_id := 0;
    
    SELECT 
    	IF(@map_id != map_id, @place := 1, @place := @place + 1) AS place, 
    	IF(@map_id != map_id, @map_id:=map_id, map_id) AS map_id,  
    	user_id, map_score , level, @place
    FROM (
      SELECT m.map_id, m.user_id, m.score AS map_score, p.level
        FROM MapsScores AS m, PlayersData AS p 
       WHERE m.user_id = p.id
       GROUP BY m.map_id, m.user_id 
       ORDER BY m.map_id ASC, m.score DESC
    ) AS tops
    GROUP BY map_id, user_id HAVING place <= СКОЛЬКО_НАРОДУ_ХОТИТЕ_В_ТОП
    ORDER BY map_id ASC, map_score DESC


    но проще сделать 50 запросов на каждую карту в отдельности — мускул вам будет благодарен :)
    Ответ написан
    Комментировать
  • Сложный запрос к БД

    @nmike
    это выведет всех, но с сортировкой

    SELECT m.map_id, m.user_id, m.score AS map_score, p.level
      FROM MapsScores AS m, PlayersData AS p
     WHERE m.user_id = p.id 
     GROUP BY m.map_id, m.user_id
     ORDER BY m.map_id ASC, m.score DESC
    

    а вот как отрезать в момент выборки…
    Ответ написан
  • MySQL клиент для Linux (Fedora)

    @nmike
    если wine вам религия разрешает использовать — то SQLYog просто великолепен. И работает под вайном очень стабильно — несколько лет на нем сижу (причем у меня до сих пор версия 7.15 стоит, а там уже 9.5 — вообще наверно сказка)
    Ответ написан
    Комментировать
  • MySQL клиент для Linux

    @nmike
    уже очень давно использую вот этим. да — виндовый, но под вайном работает отлично. проверенно годами! работы с ним.

    если жалко денешков — то вот бесплатная версия. самое главное отличие от платной — отсутствие тунелей на сервера, но вы же на юбунту — это же очень просто настроить ручками :)
    Ответ написан
    Комментировать
  • MySQL - выборка из таблицы многие ко многим

    @nmike
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ("ПЕРЕЧИСЛИТЕ_ЧТО_ХОТИТЕ")
    GROUP BY mag_id
    HAVING c = КОЛЛИЧЕСТВО_ТОГО_ЧТО_ХОТИИТЕ

    если надо 'молоко', 'мясо' и 'чай'

    то
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ('молоко', 'мясо' и 'чай')
    GROUP BY mag_id
    HAVING c = 3


    просто вложенные запросы в мускуле очень большое зло.
    Ответ написан
    2 комментария