сохранение контрольной точки строки mySql в таблице?
Вопрос
У меня возникла небольшая проблема, и я уверен, что есть более удобный/более простой способ найти решение, но в данный момент все поисковые запросы выдают пробелы!
У меня есть база данных mysql, которая регулярно обновляется страницей php [через задание cron], при этом записи добавляются или удаляются по мере необходимости.
Моя проблема в том, что мне также нужно проверить, не изменились ли какие-либо данные (например, номер телефона или что-то подобное) для записи, но делать это при каждом звонке невозможно [это не только кажется мне излишним, но я ограничено лимитом вызовов стороннего API] Плюс это не критическая информация.
Поэтому я подумал, что, возможно, было бы лучше просто проверять одну запись для каждого вызова страницы и перебирать строки/целые строки с каждым последующим вызовом страницы.
Как лучше всего это сделать, т.е. отслеживать, какую запись/строку в таблице следует проверить следующей?
У меня есть 2 идеи, как это реализовать:
1) Идентификатор текущей строки можно сохранить в файл на сервере [конечно, не лучший способ]
2) в таблицу добавляется дополнительное логическое поле [проверка], для которого установлено значение True для первой записи и значение false для всех остальных.Затем на каждой странице вызывайте его;Находит «где check = true» запускает обновление проверки в этой строке, «установить проверку = false '' set [the next row] check = true '
Если это лучший способ сделать это, или у кого-нибудь есть лучшее предложение?
заранее спасибо !
.к
PS извините за заголовок
Нет правильного решения
Другие советы
Не уверен, что это хорошее решение, но если мне придется делать массовые обновления каждую ночь, я запишу обновления в новую пустую таблицу, затем выполню SQL-выбор, чтобы объединить таблицы, и сообщу мне, где они отличаются, а затем еще одно ОБНОВЛЕНИЕ SQL, например
UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;
Вы можете сохранить временную метку неявного обновления строки, используя ON UPDATE CURRENT_TIMESTAMP [http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] или явно в вашем обновлении SQL.Затем все, что вам нужно сделать, это выбрать строку(и) с наименьшей меткой времени (используя ORDER BY и LIMIT), и у вас будет следующая строка для обработки.При условии, что вы гарантируете, что временная метка обновляется каждый раз.
напримерПредположим, вы использовали поле Last_polled_on TIMESTAMP для хранения времени опроса строки.Ваша вставка выглядит так:
INSERT INTO table (..., last_polled_on) VALUES (..., NOW());
Ваше обновление выглядит так:
UPDATE table SET ..., last_polled_on = NOW() WHERE ...;
И ваш выбор для следующей строки для опроса выглядит так:
SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;