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 * from A left join B on A.主键=B.主键 where x>=y and z>=z
如果你没有主键的话就会造成笛卡儿积 [其他解释]
select * from a,b where y<=x and x<=z
[其他解释] 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.省市