long longBegin = d.Ticks;
long longEnd = d.AddDays(1).AddMilliseconds(-1).Ticks;
string sql = "SELECT * FROM tb WHERE TricksField BETWEEN @loginBegin AND @lengEnd";
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add("@loginBegin", DbType.Int64, 64);
cmd.Parameters.Add("@loginEnd", DbType.Int64, 64);
cmd.Parameters[0].Value = longBegin;
cmd.Parameters[1].Value = longEnd;
查找今天过生日的. 百万级的数据表,
可以在c#里生成两个参数,以存储过程,或传参的语句方式执行, 在 TicksField 上建立索引,效率效数量级提升
//***************************************
.NET Framework 类库
DateTime.Ticks 属性
此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒
为间隔的间隔数。
如果确实,要用sql实现,那我们先借助前端程序得到几个数据。
C# code DateTime d = Convert.ToDateTime("1900-1-1");
DateTime d1 = Convert.ToDateTime("0001-1-1");
TimeSpan t = d - d1;
Response.Write("1900-1-1 . ticks:" +d.Ticks +"</br>" );
Response.Write("0001-1-1 . ticks:" + d1.Ticks + "</br>");
Response.Write(t.TotalMilliseconds.ToString());
综合下先建立表结构逻辑模型:
通过使用数据仓库建模思想建立星型模型:
1事实表
ID 主键
CRRQ_ID 日期ID
PLACE_ID 地点ID
XNAME_ID 姓名ID
XX 事实字段
2日期维表
CRRQ_ID 日期ID
CRRQ 日期
3地点维表
PLACE_ID 地点ID
PLACE 地点
4客户维表
XNAME_ID 姓名ID
XNAME 姓名
再利用DB2数据库的物理优化方法:
对事实表
1 数据库分区
2 表分区
3 建立MDC
4 建立 MQT
5 对联合主键建立位图索引
4亿条数据的表在数据仓库中只能算小表