首页 新闻 会员 周边 捐助

时间上建索引

0
[已解决问题] 解决于 2008-09-25 16:32

先看表结构吧.

ID       nchar(10) Unchecked
ProciveName  varchar(50) Unchecked
CityName   varchar(50) Unchecked
Money             money Unchecked
RecordTime   datetime Checked
CalledNumber   nchar(10) Checked
  这是一个处理中间表,不能用临时表做,因为以后要跟踪统计.

每天运算一次将昨天的记录插入的这个表中,然后再以这个表为基础,进行计算.

这个话单表id没有和外面的表有联系,我感觉有些多余.另由于时间(recordtime)大部分是不相同的.而且每天也是按时期分开的.我想在这个时间列上建立聚焦索引,不知道合适不>

计算流程大概是,按天分开后,还要时段分.比如12点13点等.也要按callednumber(没有多少种,10种)分,再按省分...

请给我建议,怎么建立这个表的结构及索引.

 

Jerry Qian的主页 Jerry Qian | 初学一级 | 园豆:19
提问于:2008-09-20 15:54
< >
分享
最佳答案
0

    类似我曾有过经历,当时根据要求是用了三张表进行统计,分别是 Month, Day, Hour。你这里牵扯到一个问题,你统计的时候,是纵向归纳(某固定ID的历史数据综合),还是横向归纳(某时间段的所有ID的数据综合)?

    我当时的做法是,一个Console定时器程序,每天0点激活执行,将当天 Hour 中新增的数据统计到 Day 中,如果当天是当月的头一天,则然后将当月所有天的数据统计到 Month 表中,最后对 Hour、Day、Month 进行清理、空间释放(保留固定的月、日、时个数数据)。

    需要注意一点,Month,Day,Hour 中的 RecordTime 字段都是 DateTime 类型,只是 Day 的时分为 00:00:00,Month的日为1,时分与 Day 一致。这样做就省得校对时间的表达正误了。而在统计时,也不妨碍比较过滤。

    你现在的表就类似含有最原始数据的Hour,如果不附带 Day, Month作为辅助(以空间省时间,然后通过清理,又省空间),以后当你进行大范围统计的时候估计系统会很吃力。

陛下 | 老鸟四级 |园豆:3938 | 2008-09-20 22:12
其他回答(2)
0

首先要按天分,再按小时分,因此要对天和小时都建个索引比较快一点

在ORACLE中有函数索引可以使用,在SQL SERVER上可以用计算列来建立针对天和针对小时的索引

Gray Zhang | 园豆:17610 (专家六级) | 2008-09-20 16:46
0

按天分开后,还要时段分.比如12点13点

为什么不用一个字段呢?譬如:2008-09-20 12:13,索引尽量建在重复数据少的字段上.

zjy | 园豆:3194 (老鸟四级) | 2008-09-20 16:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册