Search
Write a publication
Pull to refresh
12
0
yetanotherape @yetanotherape

User

Send message
Расскажите, как файлы, которые разработчик пишет на своей локальной машине, оказываются на его dev-сервере? Монтирование, синхронизация?
У меня была похожая задача, только хотелось отслеживать изменения страниц для себя: скидки в фитнес-клубе, акции на ТО в автосервисе и прочее. Не найдя толковых альтернатив, сделал на коленке эфпячку. Она ещё в глубокой альфе, но уже неплохо справляется со своей задачей.
Конечно вы правы! Мой запрос далек от оптимальности. Раскрою секрет: в посте я немного слукавил.
Задача: «Необходимо посчитать количество пользователей, которые хотя бы раз писали на форум в течение дня за последний месяц» была придумана для демонстрации этого конкретного запроса. На самом мне было необходимо сделать конструктор, который выдает аналитику по предварительно обработанным данным. В простом случае это: «фильтрануть уникальных пользователей за день». Но душа маркетолога крайне многогранна: завтра это может быть «пользователи у которых больше 5 постов за день», а послезавтра — «пользователи у которых от 2 до 5 постов, которые зарегистрировались более месяца назад, но у них до сих пор не заполнен профиль». В связи с этим я решил разбить задачу на два этапа: сначала фильтруем данные, потом считаем по ним аналитику. С помощью подзапроса данная задача решается наиболее просто. Но, к сожалению, не оптимально.

Ну и самое главное: пост не о том, как решить конкретную задачу лучше всего, а о том, как затейливо работают оптимизаторы MySQL и MariaDB выполняя данный конкретный запрос.
Ну вы опять за свое :) Есть конкретный запрос, который я привел в посте. В нем джойн не нужен. С этим я согласен.

Есть класс запросов с подзапросами, которые можно преобразовать в джойн. И их лучше преобразовать к джойну, пока оптимизаторы СУБД не поумнеют.

Ваш коммент «Корректней и от JOIN отказаться» показался мне призывом отказаться от джойнов вообще. Все чаще вижу людей, которые очень любят к этому призывать и недоумеваю по этому поводу.
И производить джойны руками на клиенте?
Мне кажется в посте я уделил достаточно внимания этому моменту: JOIN всем хорош. Но не любой JOIN легко сделать, когда ты используешь ORM.
См. коммент и ответ к нему выше.
В посте же сказано: неожиданные результаты выдает MariaDB.
MySQL отрабатывает правильно, но тормозит на большом наборе данных.
Внезапно! Не удаляет. Вот до чего мягкость синтаксиса доводит.
Отличная идея!
Ага! Все верно. В нашей системе правда фильтрация таблицы бывает куда сложнее, поэтому было решено использовать подзапрос. Хотя ваш запрос куда оптимальнее.
Слегка наоборот:
2013-01-01 5
2013-01-02 4
Да! Именно об этом и пост: оптимизатор MySQL ведет довольно странно.
На mysqlperformanceblog ещё в 2010 году писали, что в версии 6.0 оптимизатор заточат под такие запросы.
Ну я бы мог написать MIN(fp2.id). Суть же просто в фильтрации таблицы, чтобы дата и пользователь были уникальными.
3 разные даты специально, чтобы показать, что WHERE в подзапросе работает.
Я удивляюсь не двум записям, а числам 10 и 8. Должно быть 5 и 4.
А почему бы и нет? Мне надо было просто фильтрануть исходную таблицу перед тем как группировать.
Нет, он каждого постера посчитает столько раз, сколько раз он постил. А надо было единожды за день.
Интересная мысль — чтобы слушать аудиокниги, надо выбрать машину, которая будет нравится ;)
А куда совать деньги голограмме?
И мне!!! yetanotherape@gmail.com
Спасибо!
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity