求数据库连接查询的优化

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:41:05
现在有两个表,一个是点击记录表,字段为(访问ip,访问时间viewtime),用户每访问一次页面就往该表加一条记录.
另一个表是ip库,字段为(起始ip段ip1,结束ip段ip2,该ip段所属地区city).
现在想要统计一段时间内的页面浏览量来路分布,就是想知道用户大致上是从哪些地区访问页面的,从而统计出用户的地区分布
表中所有的ip都已转化为整型数据,即a.b.c.d 转化为 (a*256*256*256 + b*256*256 + c*256 + d)

我现在用的查询方法是:
select a.ip,b.city from
点击记录表 as a left join ip库 as b
on a.ip>=b.ip1 and a.ip<=b.ip2
where a.viewtime between '日期1' and '日期2'
在两个表中都建有索引,点击记录表中的viewtime上有聚集索引,ip字段上有非聚集索引,ip库这个表上ip1,ip2两个字段都分别建有索引

现在的问题就是点击记录表中数据量很大,每天录入的点击记录就有三十万以上,而且连接条件是一个表的列和另一个表的两列相关,所以连接查询起来很慢很慢......不知道有没有什么更好的办法呢,恳请各位大侠不吝赐教...小生万分感谢!

方法一、用空间换时间

给“点击记录表”增加IP来源字段,在插入数据的时候就通过IP在另外表中查询出来源,插入到数据库表里面。

这样查询的时候不需要关联表。

方法二、提高硬件性能

增加内存,把IP地址表设置为内存表,常驻内存。

使用磁盘阵列,成倍提高点击记录表所在硬盘的读取速度。

多建几个IP1 IP2两个表