Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.5810
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 29.11.2011, 15:38   #1
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160052
По умолчанию БД надо сконструировать

Есть, значит, табличка - там 2М+ записей (приростают), есть N объектов, для каждого из которых состояния по каждой записи может быть 0, 1 или 2.

Из большой таблицы делаются select * from items where status=0 order by rand() limit 500, после чего по некоторым записям статус для одного из объектов меняется с 0 (дефолтно - 0), на что-то другое. И при следующем селекте для этого объекта данная запись должна будет быть исключена.

Решение 1:
Ввести в большую таблицу поле obj_ids, где вписывать id объектов, поюзавших запись, а в тот селект добавить лайк.

Решение 2:
Для каждого объекта вести отдельно свою таблицу

Решение 3:
Таблица objID_itemID - хранить кейвалью, короче. Но тогда селекты из большой километровыми станут из за not in (......)

++++++++++++++++++++++++++++++++++

__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Старый 29.11.2011, 16:03   #2
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,650
Бабло: $351060
По умолчанию

дел. перечитал еще много раз.
__________________
господин мойва любит вас
Юнга вне форума  
Старый 29.11.2011, 16:05   #3
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160052
ТС -->
автор темы ТС По умолчанию

Это для объекта пользователя №1, а еще есть толпа, для которой эта запись все еще 0
__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Старый 29.11.2011, 16:10   #4
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,650
Бабло: $351060
По умолчанию

нормализировать БД надо походу.
а отношения между "пользователями" и "статусами" какие?
__________________
господин мойва любит вас
Юнга вне форума  
Старый 29.11.2011, 16:14   #5
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160052
ТС -->
автор темы ТС По умолчанию

Есть N пользователей, есть 2M+ записей, каждый пользователь периодически что-то делает со случайной записью и больше он к ней не возвращается. Это по-русски

Короче походу надо делать нефеншуй из N одинаковых таблиц
__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Старый 29.11.2011, 16:21   #6
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,650
Бабло: $351060
По умолчанию

Цитата:
И при следующем селекте для этого объекта данная запись должна будет быть исключена.
ну все равно вроде как получается, что если статус сменился с 0 на 1 то она в выборку не попадет.

но, если выбирать из трех решений - то третье выглядит самым правильным.
__________________
господин мойва любит вас
Юнга вне форума  
Старый 29.11.2011, 16:23   #7
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,650
Бабло: $351060
По умолчанию

и еще порядок объектов N - какой? скока их - 10? 100? лям?
__________________
господин мойва любит вас
Юнга вне форума  
Старый 29.11.2011, 16:27   #8
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160052
ТС -->
автор темы ТС По умолчанию

Ну я под третьим подразумевал, что будет все та же items, а так же statuses, где [obj_id | item_id | status], а потом надо делать select * from statuses where obj_id=$id, собирать item_id и всовывать в not in() для селекта из items, что сломается уже после пары сотен итераций.

N - десятки
__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Старый 29.11.2011, 16:46   #9
proc3nt
el patron
 
Аватар для proc3nt
 
Регистрация: 17.04.2007
Сообщений: 457
Бабло: $2147483647
Отправить сообщение для proc3nt с помощью ICQ
По умолчанию

order by rand() это ад
срочно избавляйся от этого, тем более у тебя такая большая таблица
__________________
10 лет на гофаке, хранитель традиций, летописец, легенда
proc3nt вне форума  
Старый 29.11.2011, 16:48   #10
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160052
ТС -->
автор темы ТС По умолчанию

Допустимо селектнуть 10к и пошафлить на уровне пхп, но не одно ли и то же? Вообще это типа бекенд, пару сек на запрос приемлимо
__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Закрытая тема



Опции темы
Опции просмотра