Статистика посещаемости сайта. Перпендикулярные таблицы - визиты (хиты), пользователи (унифицируются по id сессии визита), браузеры (по user-agent) Соответственно запрос (mysql v4.1) SELECT b.browser_id as 'browser_id', b.name as 'name', COUNT(*) as 'count' FROM stat_visits AS v LEFT JOIN stat_users AS u USING (user_id) LEFT JOIN stat_browsers AS b USING (browser_id) WHERE 1 AND u.browser_id!=0 AND b.spider=0 AND (YEAR(v.date) = 2007) AND (MONTH(v.date) = 8) AND (DAYOFMONTH(v.date) = 6) GROUP BY b.browser_id ORDER BY 'count' DESC explain по нему выдает следущее: 1 SIMPLE v ALL NULL NULL NULL NULL 113972 Using where; Using temporary; Using filesort 1 SIMPLE u eq_ref PRIMARY PRIMARY 4 hitroe.v.user_id 1 Using where 1 SIMPLE b eq_ref PRIMARY,spider PRIMARY 4 hitroe.u.browser_id 1 Using where Т.е. перебирает полностью таблицу визитов (в ней именно 113 тыщ записей). Есть ли возможность оптимизировать выборку? Не хочется вводить в таблице дополнительные поля вида "год", "месяц" и "день" вместо одного поля "дата".
Ответ на:
комментарий
от AngryElf
Ответ на:
комментарий
от gods-little-toy
Ответ на:
комментарий
от gods-little-toy
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум MySQL: Странное поведение left join (2017)
- Форум Тяжелые запросы в mysql (2012)
- Форум left outer join и проблемы с JPQL. (2019)
- Форум Тормозит Coping to tmp table (2011)
- Форум JPA: Сложный запрос (2017)
- Форум Выборка. SQL (2015)
- Форум SQL выборка. затуп. (2013)
- Форум выборка файлов VFS с помощью SQL запроса (2011)
- Форум SQL дата (2006)
- Форум Оптимизация запроса (2012)