gpt4 book ai didi

sql - 将最后的 'x' 结果保存在数据库中

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:03 24 4
gpt4 key购买 nike

我想问一下是否有一种快速的方法可以将最后插入的“x”行保留在数据库中。

例如,我有一个应用程序,用户可以通过该应用程序搜索项目,我想保留每个用户进行的最后 10 次搜索。我不想将他的所有搜索保留到数据库中,因为这会增加 db_size。有没有一种快速的方法可以只在我的数据库中保留最近的 10 次搜索,或者我应该每次都检查一下:


A)到目前为止,数据库中存储了多少搜索
B) if (searches = 10) 删除最后一行
C)插入新行

我认为这种方式会对性能产生影响,因为它需要对数据库进行 3 种不同的访问:检查、删除和插入

最佳答案

我不认为这是一种简单/快速的方法。根据您的条件,我创建了以下存储过程。

我考虑过要存储数据的 SearchContent

CREATE TABLE SearchContent (
Id INT IDENTITY (1, 1),
UserId VARCHAR (8),
SearchedOn DATETIME,
Keyword VARCHAR (40)
)

在存储过程中传递 UserId, Keyword 并进行计算。程序将是,

CREATE PROCEDURE [dbo].[pub_SaveSearchDetails]
(
@UserId VARCHAR (8),
@Keyword VARCHAR (40)
)
AS
BEGIN

SET NOCOUNT ON;

DECLARE @Count AS INT = 0;
-- A) how many searches has been stored on database so far
SELECT @Count = COUNT(Keyword) FROM SearchContent WHERE UserId = @UserId

IF @Count >= 10
BEGIN
-- B) if (searches = 10) delete last row
DELETE FROM SearchContent WHERE Id IN ( SELECT TOP 1 Id FROM SearchContent WHERE UserId = @UserId ORDER BY SearchedOn ASC)
END

-- C) insert new row
INSERT INTO SearchContent (UserId, SearchedOn, Keyword)
VALUES (@UserId, GETDATE(), @Keyword)
END

示例执行:EXEC pub_SaveSearchDetails 'A001', 'angularjs'

关于sql - 将最后的 'x' 结果保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30866044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com