记录一下,个人理解。。。
数据表中数据太多的话,刚开始可以用索引之类的来优化。随着业务多。。难免性能就下来了。 这时候就需要去思考,怎么处理,就想到了把数据源分开,把一张表分开成几张表。。
首先如何判断用不用判断,以及分表后的后端,综合考虑之后,直接开干。。
--exec sp_spaceused '表名' --查询表所占空间
先分析下,一张表活动数据如果上百万级别的话,就可以考虑分表了。。。
分表可以写一个简单的服务,或者开一个简单的线程。。按照表名+月份 或者表名+年份来安排。。
以后查询的时候,根据时间去查询所对应的表。。。
月份表获取表名例子:
private static List<string> GetTableIndex(DateTime? fromTime, DateTime? toTime, string tableName) { //获取索引值 List<string> listTableName = new List<string>(); if (!fromTime.HasValue) { fromTime = DateTime.Parse(DateTime.Now.ToShortDateString()); } if (!toTime.HasValue) { toTime = fromTime; } DateTime dtDay1 = new DateTime(fromTime.Value.Year, fromTime.Value.Month, 1); DateTime dtDay = toTime.Value; while (dtDay >= dtDay1) { listTableName.Add(tableName + "_" + dtDay.ToString("yyyyMM")); dtDay = dtDay.AddMonths(-1); } return listTableName; }
对于ORM框架不太友好 需要专门去维护一下 或者写SQL去查在转成ORM对象。