公司的业务有个功能需要查询哪些用户在某个时间内跟指定的某个用户使用相同的IP登录,也就是查询条件是 userid='xxx', addtime>'2018-06-06 00:00:00'Log表的结构是:id int pk,userid varchar(20),ip varchar(50),addtime datetime目前做了组合索引索引1:ip索引2:userid,addtime索引3:userid,addtime,ip当数据达到25W条的时候,根据查询的条件所消耗的时间很长下面是我目前使用的语句select top 50 [userid],[ip],[addtime] from logwhere [userid]<>'xxx' and addtime>'2018-06-06 00:00:00' and ip in (select ip from log where [userid]='xxx' and addtime>'2018-06-06 00:00:00' group by ip)大家如果有好的办法,请帮我解决一下,谢谢。
2 回答
狐的传说
TA贡献1804条经验 获得超3个赞
这个你在写业务逻辑的时候
1. list<##> a = select ip from log where [userid]='xxx' and addtime>'2018-06-06 00:00:00' group by ip 先把ip查出来
2.然后在select top 50 [userid],[ip],[addtime] from log
where [userid]<>'xxx' and addtime>'2018-06-06 00:00:00' and ip in (a[i]) 循环去把信息查出来 分开来执行这个sql 语句
- 2 回答
- 0 关注
- 401 浏览
添加回答
举报
0/150
提交
取消