日期:2014-05-16  浏览次数:20740 次

二表关联后,速度不给力,求优化
现有表A 148万条数据,表B 30万数据,使用的数据库是postgresql数据库,lastip、ip1、ip2有做索引,无where过滤条件,有什么办法可以在短时间内得到数据,这样的数据量其实不算很大,可是语句的优化有点麻烦。lastip、ip1、ip2均为数字

需要对A表、B表进行关联分析,得到A表中用户在各省中的分布情况。

SELECT count(DISTINCT A.id)as dt ,b.province
from A left join B b
on A.lastip between B.ip1 and B.ip2 
GROUP BY B.province;



------解决方案--------------------
ip1 ip2做联合索引
------解决方案--------------------
建视图,建表索引

建物化视图,建视图索引
------解决方案--------------------
这个语句,很难优化,可以考虑的是把数据定时统计另存一表以供查询。