【发布时间】:2019-12-15 15:13:20
【问题描述】:
我有 2 个表来记录数据。例如,如果您登录,您的信息将记录到 table1 中。当您第二次登录时,您的信息被记录到表1中,您之前的输入信息转移到表2中。表格的行太多。最后,我想获取过去 60 天内使用给定 IP 地址登录的不同用户的数量。 ip 是 sql 语句的输入。但是,我的 sql 查询存在性能问题。 (两个表具有相同的结构,请忽略您的建议的索引)另外,是使用没有 distinct 和另一个 select 关键字来获取 totCount 的任何方法。 谢谢
这是我的 sql:
select distinct count(*) over() as totCount
into p_differentCustomerCount
from (
select t1.customerNo,t1.customerIp,t1.lastlogindate from table1 t1
union all
select t2.customerNo,t2.customerIp,t2.lastlogindate from table2 t2
)t
where t.lastlogindate > sysdate - 60
and t.customerIp= "IP_As_Input"
group by customerNo;
【问题讨论】:
-
删除
union all。它什么也没做。您的描述提到了两个表,但您的查询只引用了一个。 -
您是否希望每个 ip 使用相同 ip 登录的不同用户的数量?还是只是总数?明确你想要什么。