Как вы делаете порог или лимит таблицы MySQL? - PullRequest
1 голос
/ 07 марта 2009

У меня есть таблица, в которую я хотел бы добавить только 20 самых последних записей , потому что таблица добавляет строку каждые .50 секунд.

Как бы я достиг этого при обращении к базе данных (mysql).

Должен ли я добавить новую строку и удалить самую старую всякий раз, когда я хочу вставить новое значение?

Ответы [ 4 ]

4 голосов
/ 07 марта 2009

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

CREATE VIEW latest_entries AS 
SELECT ... FROM TABLE foo ORDER BY created_time LIMIT 20;

Кроме того, не забывайте время от времени «чистить» базовую таблицу.

2 голосов
/ 07 марта 2009

Если вы действительно хотите очистить 20-ую строку таблицы при вставке новой строки, вам придется удалить строку при вставке. Лучший способ - создать Trigger , чтобы выполнить эту работу за вас.

CREATE TRIGGER Deleter AFTER INSERT on YourTable FOR EACH ROW
BEGIN
    Delete from yourTable where ID = (Select max(id) from yourTable);
END;
0 голосов
/ 25 января 2015

Другой способ сохранить размер таблицы MySQL такой же:

  • Подсчитать количество входных записей перед вставкой с использованием PHP, т.е. $ records_to_add = 20;
  • Удалить самые старые записи $ records_to_add из таблицы A. (Не забудьте ЗАКАЗАТЬ ПО И ОГРАНИЧИТЬ свой запрос на удаление.)
  • ВСТАВИТЬ новые записи в таблицу. (Было бы лучше сделать это с помощью одного запроса, а не запроса INSERT INTO в цикле.)

Таблица остается неизменной по размеру. Надеюсь, это поможет!

0 голосов
/ 07 марта 2009

Да, вам нужно удалять любые строки старше 20-й самой старой строки каждый раз, когда вы вставляете, если у вас всегда должно быть только последние 20 строк в таблице.

У вас может быть представление, которое возвращает последние 20 строк, но ваша таблица все равно будет расти, если все, что вы делаете, это вставка.

Лучшим решением может быть использование представления для запросов, не удаляйте каждый раз при вставке, а раз в день в нерабочее время запускайте удаление, которое оставляет только последние 20 строк.

Просто убедитесь, что столбец метки времени проиндексирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...