DateTime d = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd"));
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億條資料的表在資料倉儲中只能算小表