MSSQL现在能不能在一个字段里存放一个查询出来的记录,高人有什么高招,感谢指教!

goodgame365 2021-05-12 09:49:38
有一个业务,三层循环遍历查询,发现非常耗时

第一层,遍历用户每次的登录

第二层,从每次的登录里,遍历浏览的页面

第三层,从每个页面里,取得俱体页面的详情!

感觉这样很耗时,各家前辈,有没有更好的思路实现我上面的需求

特别是能不能把第二层的内容,放在第一层里作为一个字段存储,来减少循环调取数据库



...全文
1874 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodgame365 2021-05-12
  • 打赏
  • 举报
回复
比如查询客户一个月来的浏览足迹 我分两个表来记录,一个表记录用户(LoginData)的登录,然后另一个表(ActionData)记录俱体的浏览足迹,并关联登录的ID ,意思一次登录会对应多个行为轨迹. 结构大概这样:
morliz子轩 2021-05-12
  • 打赏
  • 举报
回复
我不想深究你的逻辑,只想问问,业务背景需求目的是什么? 查询用户操作的日志里,有哪些动作记录? 如果是这样,不会说在查询时,没有一个条件范围。如果有百万数据量,用遍历循环来查,这不等于进了死胡同吗。
morliz子轩 2021-05-12
  • 打赏
  • 举报
回复
demo:

create table LoginData(
    LoginID int,
    LoginDt datetime
)

create table ActionData(
    ActID int,
    LoginID int,
    Itemno nvarchar(30),    --模块项目['楼盘动态']['户形详情']等
    Limno nvarchar(60),      --具体详情
    BrowDt time                 --浏览的时长
)

declare @LoginID int = xxxx      --登陆ID
             @BeginDt nvarchar(10) ='xxxxxxx',     --起始登录日期
             @EndDt nvarchar(10) = 'xxxxxxx'       --截止日期

select a.……,
          b.……

from LoginData a
left join ActionData b on a.LoginID = b.LoginID
where LoginID = @LoginID
and convert(date,LoginDt) between @BeginDt and @EndDt
是要这样的结果?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧