сохранение контрольной точки строки mySql в таблице?

StackOverflow https://stackoverflow.com/questions/2343950

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня возникла небольшая проблема, и я уверен, что есть более удобный/более простой способ найти решение, но в данный момент все поисковые запросы выдают пробелы!

У меня есть база данных 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top