在数据库中重置计数器的最佳方法是什么?

时间:2019-06-02 15:04:04

标签: c# sql

我在数据库中有一列,其中保存了有关用户执行的搜索的一些详细信息(搜索到的数据和时间戳)。我必须实施限制,每天只能执行10次搜索。然后计数器应在午夜重置。

每次发出请求时,我都需要检查数据库(MSSQL)中是否已经保存了10个搜索。如果达到限制,则在控制器中返回4xx响应。

我正在考虑每次发出请求时都更新数据库中的搜索列表,并从上一天开始删除带有时间戳的记录。但是我认为从性能的角度来看,这不是最佳的解决方案。

实现它的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

为什么不只使用计数查询?

import csv

with open(input_file_path, 'rU') as csv_file:
    rows = csv.DictReader(csv_file, delimiter=',')
    for row in rows:
        print row

使用select count(*) from t where t.user_id = ? and t.search_datetime >= convert(date, getdate()) 上的索引,这应该很快。

否则,您需要编写一个触发器(或类似机制)来维护一个计数,并为每次可能的搜索检查该计数。