public int[] counts()
{
int[] zj;
int y1= 0;
int y2= 0;
int y3= 0;
int y4= 0;
IList<tb_ssq> listSsq = (from ls in cpjc.tb_ssq where ls.tb_ssq_QiShu == 2011129 orderby ls.tb_ssq_JieZhiTime descending select ls).ToList();
if (listSsq.Count != 0)
{
ArrayList al = new ArrayList { 1, 2, 3, 4, 5, 6};
ArrayList alBlue = new ArrayList { 7};
for (int i = 0; i < listSsq.Count; i++)
{
int countH = 0; //统计红球中奖个数
int countL = 0; //统计篮球是否中奖
if (al.Contains(listSsq[i].tb_ssq_h1))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h2))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h3))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h4))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h5))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h6))
countH++;
if (alBlue.Contains(listSsq[i].tb_ssq_l1))
countL++;
if (countH == 6 && countL == 1)
{
y1++;
listSsq[i].tb_ssq_state= 2;
}
else if (countH == 6 && countL == 0)
{
y2++;
listSsq[i].tb_ssq_state = 2;
}
else if (countH == 5 && countL == 1)
{
y3++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 5 && countL == 0) || (countH == 4 && countL == 1))
{
y4++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 4 && countL == 0) || (countH == 3 && countL == 1))
{
listSsq[i].tb_ssq_state = 2;
}
else if (countL == 1)
{
listSsq[i].tb_ssq_state = 2;
}
else
{
listSsq[i].tb_ssq_state = 1;
}
}
cpjc.SubmitChanges();
}
zj = new int[] { y1, y2,y3, y4};
return zj;
}
如上所示代码,tb_ssq表中有100条数据,如何提高该自定义方法counts()的执行处理速度,即查询数据、比较数据、更新数据的速度???
17 个解决方案
#1
先将需要的数据取出来放在内存里面,注意只取需要用到的数据,然后在内存里比较
#2
这个需要很多方面去优化,服务器,数据库,sql语句,客户端(分页,按提条件查询)等等,慢慢来吧
#3
最基本的一个方法,先给主键和查询列添加索引
#4
++
#5
差点看成是“ 艹”了。哈哈。
#6
添加索引 和 用多少取多少的原则
#7
在你的硬件条件目前无法改变的情况下,一般只能是从sql语句入手了,想法优化,用多少取多少(也有多种方法),前台分页是必须的,
还有楼上说的,索引了什么的.真得慢慢来,就是一下子把这些都用上了,也不一定就能好多少,把这些和你的实际情况结合起来一下.
还有楼上说的,索引了什么的.真得慢慢来,就是一下子把这些都用上了,也不一定就能好多少,把这些和你的实际情况结合起来一下.
#8
嗯,先分析sql语句,需要什么就只取什么,别太浪费!
#10
增加索引,数据库语句优化点,用sql探测工具,检查下CUP,月底,说明语句优化越好
#11
如果有主键, 主键是数字, 可以用top+not in, 否则用row_number()好点.
#12
错了,表中有100w条数据,如何提高比较的效率,降低比较处理的时间???
#13
if (listSsq.Count != 0)
{
ArrayList al = new ArrayList { 1, 2, 3, 4, 5, 6};
ArrayList alBlue = new ArrayList { 7};
for (int i = 0; i < listSsq.Count; i++)
{
int countH = 0; //统计红球中奖个数
int countL = 0; //统计篮球是否中奖
if (al.Contains(listSsq[i].tb_ssq_h1))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h2))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h3))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h4))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h5))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h6))
countH++;
if (alBlue.Contains(listSsq[i].tb_ssq_l1))
countL++;
if (countH == 6 && countL == 1)
{
y1++;
listSsq[i].tb_ssq_state= 2;
}
else if (countH == 6 && countL == 0)
{
y2++;
listSsq[i].tb_ssq_state = 2;
}
else if (countH == 5 && countL == 1)
{
y3++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 5 && countL == 0) || (countH == 4 && countL == 1))
{
y4++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 4 && countL == 0) || (countH == 3 && countL == 1))
{
listSsq[i].tb_ssq_state = 2;
}
else if (countL == 1)
{
listSsq[i].tb_ssq_state = 2;
}
else
{
listSsq[i].tb_ssq_state = 1;
}
}
cpjc.SubmitChanges();
}
提高这一部分的效率,减少比较处理时间????
#14
用SqlbulkCopy类解决
#15
这种典型的数据类型,
显然应该用数学方法直接查询得到!!!
显然应该用数学方法直接查询得到!!!
#16
看起来像是7星彩的中将统计,
你描述下你的实际业务需求,
我看看能不能给你一个比较快的解决办法。
你描述下你的实际业务需求,
我看看能不能给你一个比较快的解决办法。
#17
请看我在你另一个帖子里的回复
#1
先将需要的数据取出来放在内存里面,注意只取需要用到的数据,然后在内存里比较
#2
这个需要很多方面去优化,服务器,数据库,sql语句,客户端(分页,按提条件查询)等等,慢慢来吧
#3
最基本的一个方法,先给主键和查询列添加索引
#4
++
#5
差点看成是“ 艹”了。哈哈。
#6
添加索引 和 用多少取多少的原则
#7
在你的硬件条件目前无法改变的情况下,一般只能是从sql语句入手了,想法优化,用多少取多少(也有多种方法),前台分页是必须的,
还有楼上说的,索引了什么的.真得慢慢来,就是一下子把这些都用上了,也不一定就能好多少,把这些和你的实际情况结合起来一下.
还有楼上说的,索引了什么的.真得慢慢来,就是一下子把这些都用上了,也不一定就能好多少,把这些和你的实际情况结合起来一下.
#8
嗯,先分析sql语句,需要什么就只取什么,别太浪费!
#9
http://www.cnblogs.com/jirigala/archive/2010/11/03/1868011.html这是吉日嘎拉的数据库优化,很多人借鉴过。楼主看看。
#10
增加索引,数据库语句优化点,用sql探测工具,检查下CUP,月底,说明语句优化越好
#11
如果有主键, 主键是数字, 可以用top+not in, 否则用row_number()好点.
#12
错了,表中有100w条数据,如何提高比较的效率,降低比较处理的时间???
#13
if (listSsq.Count != 0)
{
ArrayList al = new ArrayList { 1, 2, 3, 4, 5, 6};
ArrayList alBlue = new ArrayList { 7};
for (int i = 0; i < listSsq.Count; i++)
{
int countH = 0; //统计红球中奖个数
int countL = 0; //统计篮球是否中奖
if (al.Contains(listSsq[i].tb_ssq_h1))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h2))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h3))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h4))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h5))
countH++;
if (al.Contains(listSsq[i].tb_ssq_h6))
countH++;
if (alBlue.Contains(listSsq[i].tb_ssq_l1))
countL++;
if (countH == 6 && countL == 1)
{
y1++;
listSsq[i].tb_ssq_state= 2;
}
else if (countH == 6 && countL == 0)
{
y2++;
listSsq[i].tb_ssq_state = 2;
}
else if (countH == 5 && countL == 1)
{
y3++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 5 && countL == 0) || (countH == 4 && countL == 1))
{
y4++;
listSsq[i].tb_ssq_state = 2;
}
else if ((countH == 4 && countL == 0) || (countH == 3 && countL == 1))
{
listSsq[i].tb_ssq_state = 2;
}
else if (countL == 1)
{
listSsq[i].tb_ssq_state = 2;
}
else
{
listSsq[i].tb_ssq_state = 1;
}
}
cpjc.SubmitChanges();
}
提高这一部分的效率,减少比较处理时间????
#14
用SqlbulkCopy类解决
#15
这种典型的数据类型,
显然应该用数学方法直接查询得到!!!
显然应该用数学方法直接查询得到!!!
#16
看起来像是7星彩的中将统计,
你描述下你的实际业务需求,
我看看能不能给你一个比较快的解决办法。
你描述下你的实际业务需求,
我看看能不能给你一个比较快的解决办法。
#17
请看我在你另一个帖子里的回复