提高数据分析的效率,减少分析时间,该如何处理
提高数据分析的效率,减少分析时间
我做的是一个彩票双色球项目,希望当用户投注的号码数据量达到10w、100w或更多时,当开奖时,通过分析用户是否中奖的时间减少!!!
希望高手能给个解决方案,再次了!!!期待着您的解决方法!!!!
------解决方案--------------------
首先,你在插入用户投注号码的时候,对红球排一下序,然后比较的时候,也先对中奖红球排下序,剩下的问题就是求两个数组相同的数字有几个的问题。
这里有一段代码是我测试的结果:
我做的是一个彩票双色球项目,希望当用户投注的号码数据量达到10w、100w或更多时,当开奖时,通过分析用户是否中奖的时间减少!!!
希望高手能给个解决方案,再次了!!!期待着您的解决方法!!!!
------解决方案--------------------
首先,你在插入用户投注号码的时候,对红球排一下序,然后比较的时候,也先对中奖红球排下序,剩下的问题就是求两个数组相同的数字有几个的问题。
这里有一段代码是我测试的结果:
- C# code
static void Test() { int[] winNumRed = new int[] { 7, 10, 19, 25, 26, 33 }; int winNumBlue = 8; DateTime startDate = DateTime.Now; for (int i = 0; i < 10000000; ++i) { int[] selectedNumRed = new int[] { 1, 8, 12, 27, 29, 32 }; int selectedBlue = 12; int redNum = 0; // 方法一 int j = 0, k = 0; while (j < 6 && k < 6) { int jNum = selectedNumRed[j]; int kNum = winNumRed[k]; if (jNum < kNum) ++j; else if (jNum == kNum) { ++redNum; ++j; ++k; } else ++k; } // 方法二 //for (int j = 0; j < 6; ++j) //{ // if (winNumRed.Contains(selectedNumRed[j])) // ++redNum; //} bool blueFlag = winNumBlue == selectedBlue; } DateTime endDate = DateTime.Now; Console.WriteLine(endDate - startDate); }
------解决方案--------------------
SQL 代理不是程序,是 SQL Server 提供的一个服务,类似于 Windows 的定时任务,你可以在代理中启动存储过程、执行定时备份等等,对于你的问题,你可以看下这篇文章:
http://www.cnblogs.com/jasmine_xm/archive/2010/07/21/1782601.html
------解决方案--------------------
还有,你也可以用触发器来实现,当插入开奖数据后就触发。不过我觉得还是代理好些,大数据量的处理最好放在深夜来执行,不可能让人在深夜巴巴地等着去插入开奖数据吧。