Каков наилучший способ сброса счетчика в базе данных? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть столбец в БД, в котором сохраняются некоторые сведения о поисках, выполненных пользователем (данные поиска и метка времени).Я должен ввести ограничение, позволяющее выполнять только 10 поисков в день.Затем счетчик должен быть сброшен в полночь.

Каждый раз, когда делается запрос, мне нужно проверить, сохранено ли уже 10 поисков в БД (MSSQL).Затем верните ответ 4xx в контроллер, если предел достигнут.

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

Каков наилучший способ его реализации?

1 Ответ

0 голосов
/ 02 июня 2019

Почему бы просто не использовать запрос подсчета?

select count(*)
from t
where t.user_id = ? and
      t.search_datetime >= convert(date, getdate()) 

С индексом (user_id, user_datetime) это должно быть довольно быстро.

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

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