CREATE CLUSTERED INDEX PK_area ON B (area1 )
CREATE NONCLUSTERED INDEX N_area ON B(startip,endip)
CREATE NONCLUSTERED INDEX N_IP ON A(ipx)
SELECT area1,COUNT(a.ipx)
FROM B b , a a
WHERE a.ipx BETWEEN b.startip AND b.endip
GROUP BY area1
------其他解决方案-------------------- select A,*,b.*
from A,B
where b.y<=a.x and a.x<=b.z ------其他解决方案-------------------- x(int)
表B中有两列y(int),z(int) 现在想查出y<=x and x<=z 的 表A 表B中所以的信息
select * from a join b on y<=x and x<=z ------其他解决方案-------------------- 数据在A表是一个接收用户登陆IP地址x=IPadress,B表是IP地址区域表(包括省市)y=startIP,z=endIP,
B表中几十万条数据,而且A表每天的数据量也很大,就是想统计每天各省市的访问量,以上方面试了,查询太慢了。各位有什么好的方法 ------其他解决方案-------------------- 你如果没有主键关联,他们的方法都是笛卡儿积,就是几十万乘以A表总数,好几十个亿都不止。
幻想不出你的表,试试:
select b.省市,count(a.主键)
from b left join a on a.x between b.y and b.z
group by b.省市