КАК удалить запись в таблице, сохранив определенные данные?

0

На моем сайте есть много входящих запросов, которые хранятся в базе данных, чтобы показывать последние запросы на моем сайте. из-за высоких поисковых запросов моя база данных становится больше по размеру. так что я хочу, мне нужно сохранить только последние запросы в базе данных, говорят 10 записей. это уменьшит мою базу данных и запросы будут быстрее.

Я могу хранить входящие запросы в базе данных, но не знаю, как ограничить или удалить лишние/старые данные из таблицы.

любая помощь?

Я использую PHP и MySQL

Теги:

2 ответа

0
Лучший ответ

Вы должны написать PHP скрипт, который будет запускаться CRON (то есть один раз в день) и перенести некоторые данные из основной таблицы TableName в архивную таблицу TableNameArchive с точно такой же структурой. Этот SQL внутри script должен выглядеть так:

INSERT INTO TableNameArchive 
SELECT * FROM TableName WHERE data < '2010-06-01' //of course you should provide here your conditions

Далее вы должны УДАЛИТЬ старые записи из TableName.

1

Надеюсь, у вас есть столбец timestamp в вашей таблице (или есть возможность добавить его). AFAIK, вы должны добавить метку времени, когда вы добавляете данные в таблицу. Затем вы можете сделать что-то по строкам:

DELETE FROM tablename WHERE timestamp < '<a date two days in the past, or whatever'>;

Вероятно, вы захотите сделать это периодически, а не каждый раз, когда вы добавляете в таблицу.

Я предполагаю, что вы также можете просто ограничить размер последних десяти записей, проверяя размер таблицы каждый раз, когда вы собираетесь добавить строку, и удалите самую старую запись (опять же, используя добавленный столбец отметки времени) если добавление новой записи сделает ее слишком большой.

Ответ Falkon хорош - хотя вы можете не захотеть иметь ваш архив в таблице, в зависимости от ваших потребностей в этих судебных данных. Вы также можете настроить задание cron, которое просто использует mysqldump для создания резервной копии базы данных (с датой в имени файла), а затем удаляет лишние записи. Таким образом, вы можете легко создавать резервные копии своих старых данных или искать их с помощью любого инструмента, а ваша база данных остается небольшой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню