![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Добрый день!
Ребята, помогите с запросом. Вроде бы ничего сврехзаурядного, но все никак... ![]() Есть таблицы: users - таблица юзеров (user_id INT PRIMARY, registered INT, ...) post - таблица постов (post_id INT PRIMARY, user_id INT, timestump INT, ...) - для каждого юзера может быть множество записей! stat - статистика юзера (stat_id INT PRIMARY, user_id INT, ...) - для каждого юзера может быть множество записей! Указал только колонки, которые нас интересуют... Сорри, что без дампа, на проекте там куча разных полей, проще описать только значимое. Необходимо выбрать данные статистики для пользователей, которые зарегистрированны с 1111111111 по 2222222222, и имеют посты, сделанные с 3333333333 по 4444444444. Т.е. берем таблицу юзеров. Дальше джойним посты, p.user_id=u.user_id. На этом этапе проблем нет, все летает. Далее надо заджойнить стату, s.user_id=u.user_id и указываем условия по времени.
Все это подвисает даже на таблицах с 10 строками. Чувствую, что где-то жестко затупил, но не могу понять где? |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 10 Всего: 252 |
А если попробовать через Between?
|
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
ТоляМБА, уже не знаю что и делать, тупик, так что попробовал.
![]() То же самое. ![]() Я вообще никогда не понимал смысла этого Between. |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 10 Всего: 252 |
maxipub, а registered и timestump у тебя индексированы?
|
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: 1 Всего: 1 |
Это какой-то цирк...
Чуть описался. Тут я имел в виду не таблицы, а что результатов будет на 10 строк, т.е. не большой объем. Мне аж стыдно. Но дело в том, что и сами таблицы небольшие. Там по 100к записей, общим объемом 50 мегов. Раньше сталкивался с тем, что ждойны по нескольким таблам при неосторожности могут генерить огромнейшие результаты через временную таблицу и от этого жутко тормозить. Но там всегда проблемой был лишь нереальный объем сгенерированных данных, которые раздувались и долго-долго свопились. Я и подумать не мог, что тормоза на таких малых объемах могут быть из-за индекса. Ну ладно там, не 0.0001 сек, а 5-10 сек запрос выполняется - вижу, тормозит, врубил профилирование, эксплейн, и погнали... Но тут я 10 минут ждал! В общем, вем живи - век учись... ЗЫ: добавил индекс на s.user_id, все полетело. Пробовал потом на таймстампы ставить, c SQL_NO_CACHE запускал, разницы не было. Проблема была именно в джойнах. ТоляМБА, спасибо огромное, товарищ! ![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |