是个公司的项目,我现在把问题简化一下,已知一个表Acreate table A
{
user_id varchar(10) primary key, #用户ID
tradetime int(10) not null #交易时间,为UNIX时间
};那么我的将会使用一条select语句计算每个用户id号出现的次数和出现的天数,如下
select user_id, count(*), count(distinct from_unixtime(tradetime, ‘%Y%m%d'))
from A
group by user_id;这条语句是可以执行的,首先说明下,我的数据量是在百万级别的,这条语句用时将近30多分钟,后来我把distinct去掉后速度明显加快,只耗时1分钟左右,我认为瓶颈是distinct,因为distinct可能会进行海量数据的排序。我看现在只有改变我写的sql语句的,大伙可以写出满足功能的语句,使速度得到明显提升吗,谢谢了
{
user_id varchar(10) primary key, #用户ID
tradetime int(10) not null #交易时间,为UNIX时间
};那么我的将会使用一条select语句计算每个用户id号出现的次数和出现的天数,如下
select user_id, count(*), count(distinct from_unixtime(tradetime, ‘%Y%m%d'))
from A
group by user_id;这条语句是可以执行的,首先说明下,我的数据量是在百万级别的,这条语句用时将近30多分钟,后来我把distinct去掉后速度明显加快,只耗时1分钟左右,我认为瓶颈是distinct,因为distinct可能会进行海量数据的排序。我看现在只有改变我写的sql语句的,大伙可以写出满足功能的语句,使速度得到明显提升吗,谢谢了
解决方案 »
- ===Windows7下数据库远程连不上。===
- 字符串分离,解完立即给分~~~
- 请教,去除重复记录的问题!
- exec(' update ' +@paperTitle+ ' set questionType= ' +@questionType+)
- ASP导入文本到ACCESS数据库中的类型转换问题。难题。。在线求助。
- 如果提高20个LEFT JOIN 查询的速度??????
- 编码转换问题,再次请教
- 还是排序规则问题,期待老大再次出现
- 比较SQL SERVER与ORACLE、DB2
- 求SQL Server2000两台服务器数据复制问题(多谢帮忙,相送100)
- sql查询数据表的问题
- 寻求高手指点,根据时间段统计
没什么好改的
oh yeah,不过只是我想问问有没有什么其他的方法可以实现,比如说建立临时表什么的,只涉及到sql语句
建立合适的索引。。