Реклама на сайте Advertise with us

Хелп по мускулу

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 03:47       Ответить с цитатойцитата 

То ли я не понимаю как работает sum, то ли какие-то баги мускуля
Идет первый запрос, количество кликов за текущие сутки:
>> SELECT sum(user_clicks) FROM users WHERE user_when > 1282712400
Возвращает 29516 (совершенно не риал - за все время у меня 70к)
Идет второй запрос, кол-во кликов за предыдущие сутки:
>> SELECT sum(user_clicks) FROM users WHERE user_when > 1282626000 && user_when < 1282712400
Возвращает 2469 (уже более реальные цифры)


В чем ллять разница?? вообще не могу въехать..

0
 



С нами с 13.01.10
Сообщения: 84
Рейтинг: 72

Ссылка на сообщениеДобавлено: 26/08/10 в 11:37       Ответить с цитатойцитата 

ну судя по SQL разница в уловиях WHERE... а наасчет багов MySQL это вряд ли. А что за поле user_when? я так понял количество секунду? А что не просто дата?

0
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 26/08/10 в 12:17       Ответить с цитатойцитата 

group by выставлять надо по правильным параметрам

0
 



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 12:52       Ответить с цитатойцитата 

user_when - время, когда юзвер зашел на сайт, в юниксовом формате. Почему не таймштамп - сам уже не помню, но в таком виде был какой-то сакральный смысл.
Вот в том то и дело что когда пытаемся подсчитать за текущие сутки через WHERE user_when > 1282712400 вываливается полная херь(

0
 



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 13:42       Ответить с цитатойцитата 

leroy_17 писал:
group by выставлять надо по правильным параметрам


о, сейчас затестимс!

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 26/08/10 в 14:01       Ответить с цитатойцитата 

group by имхо не нужен.
какая размерность поля хранящего время - INT -сколько = 9-10-11 ?
или на всякий случай посмотрите - нету ли в таблице невалидных данных - какой-то один счетчик зашкалил или есть записи на "год вперед".

0
 



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 14:21       Ответить с цитатойцитата 

Heavy писал:
group by имхо не нужен.
какая размерность поля хранящего время - INT -сколько = 9-10-11 ?


user_when int(15)

Heavy писал:

или на всякий случай посмотрите - нету ли в таблице невалидных данных - какой-то один счетчик зашкалил или есть записи на "год вперед".


Глянул - все ок вроде. От 1279062533 до 1282821657.

0
 



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 14:26       Ответить с цитатойцитата 

Засунул груп. Уже с час весит 115 кликов, хотя гдет с 300 человек зашло (по крайней мере кликов 50-100 должно было набежать точно). Подозреваю что нужны еще какие-то параметры icon_smile.gif:
>> SELECT sum(user_clicks) FROM users WHERE user_when > " . $today . " GROUP BY user_id"

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 26/08/10 в 14:41       Ответить с цитатойцитата 

Что-то не совсем понятно, что там в таблице вообще лежит - что в поле user_click и откуда оно берется? Я правильно понимаю, что там количество кликов от данного юзера, а user_when обновляется каждый раз, когда этот юзер кликает? Что это за юзеры, как ты определяешь, что именно за юзер кликнул? А так пока все "на деревню дедушке"

0
 



С нами с 27.05.10
Сообщения: 62
Рейтинг: 4

Ссылка на сообщениеДобавлено: 26/08/10 в 15:21       Ответить с цитатойцитата 

Такс, в таблице есть:
user_id - автоинкримент, индекс, первичный
user_infohash - md5, в него уходит инфа о юзвере (айпи, агент и еще что-то там) - по нему определяю уникальность юзверя
user_referer - откуда пришел
user_clicks - количество кликов юзверя, ++ при каждом клике.
user_when - время когда пришел пользователь (в юниксовом формате) пишется один раз

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 26/08/10 в 17:03       Ответить с цитатойцитата 

Ну а чего "такс"? Запрос выглядит совершенно нормальным, а вот гарантий, что ему скармливают валидные данные - нету никаких. Если ты на самом деле создаешь запись в первый раз, как юзер к тебе пришел - то ты в данной ситуации делаешь выборку не хитов за день, а сколько у тебя за тот день новоприбывших - старых юзеров, которые к тебе вернулись, ты уже не увидишь в селекте. Если же ты все-таки обновляешь user_when - то вылезать будет сумма всех хитов, за все время - от тех юзеров, которые один клик хотя бы за данный период выдали. Ну и за кадром остаются вопросы багов в коде, который уникальность юзера определяет, хэш создает. И еще мало ли что там за кулисами. Прежде чем предположить баги в MySQL, логично все-таки предположить сначала баг в своем коде.

По-хорошему тут 2 таблицы должно быть - в одной юзера, в другой - raw hits от них, с таймстемпом каждого и увязкой с таблицей юзеров через primary id таковой (веришь, нет - и работать будет быстрее). А так как сделано - это через жопу, и дальнейшие баги меня совершенно не удивили бы. К примеру, NULL values в колонке user_when

0
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 26/08/10 в 18:08       Ответить с цитатойцитата 

ты бы сначала структуру выложил таблы icon_wink.gif


user_infohash - может лучше рассмотреть вариант с простановкой куков ? в большинстве случаев это будет лучше для подсчета юзеров, например если какой то трейд трафа.


Dr.Syshalt +1

0
 



С нами с 13.01.10
Сообщения: 84
Рейтинг: 72

Ссылка на сообщениеДобавлено: 27/08/10 в 10:21       Ответить с цитатойцитата 

leroy_17 писал:
group by выставлять надо по правильным параметрам


Нафига нужен group by? Это параметр нужен тольео если нуджно отгрупировать по полю. Проблема тут в том, что не верно выставлены условя в WHERE, вот и все. Как сделать их верными - это надо смотреть на данные в таблице.

0
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 27/08/10 в 13:53       Ответить с цитатойцитата 

проблема тут в архитектуре таблицы.
про group by сказал до того как увидел структуру

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »