![]() |
|
Модераторы: skyboy |
![]()
|
|
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Добрый день, уважаемые форумчане!
Нужен Ваш совет! Задача следующая: В таблице authors хранятся авторы. У каждого автора есть значение accuracy. Нужны только такие авторы, у которых accuracy > 2. Через php мы получаем множество различных авторов со своими сообщениями. И нам необходимо проверить, если у этого автора accuracy > 2, то мы должны записать его сообщение, а если меньше - то не должны. Если автора нет, то мы добавляем его в таблицу с accuracy = 1. Сам я вижу 2 алгоритма: 1 вариант) Загружаем в ассоциативный массив всех авторов и проверяем каждое сообщение на то, есть ли в ключах данного массива этот автор. Но тут проблема в том, что в настоящее время у меня 4000 целевых авторов. А через пару месяцев их может быть уже 50000. И я думаю, не слишком ли будет много памяти жрать данный массив; 2 вариант) Я сохраняю все записи в таблицу. И после того, как все записи сохранились я запускаю сложный запрос DELETE, который будет проверять, что если у автора accuracy <= 2, то удалить его сообщение. Но тут не эффективность в том, что я трачу время на запись так сказать "ненужных" данных в таблицу. Надеюсь объяснил нормально и меня смогут понять. Это сообщение отредактировал(а) AGENTxXx - 10.4.2014, 13:17 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Первым этапом следует ВСЕ данные записать во временную таблицу на сервере. Обычный CREATE TEMPORARY TABLE ... SELECT ...
Вторым - выполнить добавление в таблицу авторов всех, кого там нет. Обычный INSERT INTO ... SELECT ... Третьим - выполнить добавление сообщений в таблицу сообщений. Обычный INSERT INTO ... SELECT ... Все три запроса следует выполнять в одном connection. Любая обработка на клиенте - ересь. За исключением одного случая - бОльшая часть сообщений написана авторами с accuracy = 1. Если же данных очень много, они структурированы (CSV), и имеется возможность загрузить файл с данными на MySQL-сервер (скажем, по FTP) - лучше передать данные именно так, и на первом этапе использовать CREATE TEMPORARY TABLE + LOAD DATA INFILE. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| AGENTxXx |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 8.6.2009 Репутация: нет Всего: 1 |
Спасибо за совет! Думаю что так и сделаю (через временную таблицу)
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |