当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 比如1出现概率为0.4,2是0.1,3是0.2,4是0.3。程序应该怎么写出每次回出现什么数? ......
 ·性是第一生产力    »显示摘要«
    摘要: 同意的请举手 ......


提供大家产生1000万记录的SQL,测试SELECT速度

--drop   table   TGongwen  
  --create   table   TGongwen(  
  --[Did]   [int]   IDENTITY(1,1)   NOT   NULL   primary   key   check(Did   >   0),  
  --title   varchar(80)   default   null,  
  --fariqi   datetime   null,  
  --neibuyonghu   varchar(70)null,  
  --reader   varchar(70)   null)  
  --go  
  --declare   @i   int  
  --set   @i   =   1  
  --while   @i<=   250000  
  --begin  
  --insert   into   TGongwen(fariqi,neibuyonghu,reader,title)   values   (2005-9-9,通信科,通信科,办公室,王局长,刘局长,张局长,admin,外事科,这是最先的25万条记录)  
  --set   @i   =   @i   +1  
  --end  
  --go  
  --declare   @i   int  
  --set   @i   =   1  
  --while   @i<=   250000  
  --begin  
  --insert   into   TGongwen(fariqi,neibuyonghu,reader,title)   values   (2005-8-16,办公室,通信科,办公室,王局长,刘局长,张局长,admin,外事科,这是中间的25万条记录)  
  --set   @i   =   @i+1  
  --end  
  --go  
  --declare   @h   int  
  --set   @h   =   1  
  --while   @h   <=   100  
  --begin  
  --declare   @i   int  
  --set   @i   =   2002  
  --while   @i<=   2003  
  --begin  
  --declare   @j   int  
  --set   @j   =   0  
  --while   @j<50  
  --begin  
  --declare   @k   int  
  --set   @k   =   0  
  --while   @k   <50  
  --begin  
  --insert   into   TGongwen(fariqi,neibuyonghu,reader,title)   values   (cast(@i   as   varchar(4))+-8-15   5:+cast(@j   as   varchar(2))+:+cast(@j   as   varchar(2)),通信科,通信科,办公室,王局长,刘局长,张局长,admin,外事科,这是最后的50万条记录)  
  --set   @k   =   @k   +1  
  --end  
  --set   @j   =   @j   +1  
  --end  
  --set   @i   =   @i   +1  
  --end  
  --set   @h   =   @h   +1  
  --end  
  --go  
  declare   @i   int  
  set   @i   =   1  
  while   @i   <=   9000000  
  begin  
  insert   into   TGongwen(fariqi,neibuyonghu,reader,title)   values   (2005-8-14,办公室,通信科,办公室,王局长,刘局长,张局长,admin,外事科,这是最后添加的900万条记录)  
  set   @i   =   @i   +   1  
  end  
  go  
  --select   count   (Did)   from   TGongwen  
   
  下面是得到SELECT时间的方法:  
  declare   @d   datetime   --定义日期时间  
  set   @d   =   getdate()--给变量付值  
  select   *   from   orders   where   orderdate   <   1997-1-12--select语句  
  select   "查询执行时间"   =   datediff(ms,@d,getdate())--得到语句的执行时间  
  建议:在插入最后900万记录时,系统性能不好的朋友,最好分段插入,比如每次插入100万。  
 

NO.1   作者: lovebanyi

up

NO.2   作者: jyk

眼熟!!  
   
  http://dev.csdn.net/article/43/43936.shtm  
  海量数据库的查询优化及分页算法方案  
   
  和这里的是不是一样的呀?

NO.3   作者: RoninBlade

学习学习,我sql好弱...

NO.4   作者: luck0235

上次自己写循环插1000万条记录用了两个小时。

NO.5   作者: sp1234

当数据大量重复的时候,索引不但失效,而且可能比没有索引还慢。  
   
  数据库的查询语句优化方法,要根据很多种数据排列情况进行修改!  
   
  你真的认为现实当中的业务数据由如此相似性?使用错误的测试数据,会得到完全错误的经验。

NO.6   作者: eyecao

同意楼上的讲法,因为具体问题要用具体相对应的方法解决,这样才能真正发挥数据库的高效处理能力!  
   
  楼主的SQL语句只可以仅作参考,不可以直接套用!

NO.7   作者: henry3695

declare   @i   int  
  set   @i   =   1  
  while   @i   <=   9000000  
  begin  
  insert   into   TGongwen(fariqi,neibuyonghu,reader,title)   values   (2005-8-14,办公室,通信科,办公室,王局长,刘局长,张局长,admin,外事科,这是最后添加的900万条记录)  
  set   @i   =   @i   +   1  
  end  
  go  
   
   
  如果就执行这句要用2个小时吗,恐怖哦  
 

NO.8   作者: henry3695

900   0000条记录的分页怎么做啊,还是想想这个吧

NO.9   作者: jyk

 
   
   
   
   
  ====================强烈建议============================  
   
  http://dev.csdn.net/article/43/43936.shtm  
  海量数据库的查询优化及分页算法方案  
   
   
  唉!大家还是先看看这个吧!!!  
   
   
  ====================强烈建议============================  
   
   
   
   
 

NO.10   作者: sp1234

添加海量数据,不能带着索引,都是首先停用所有索引,插入之后再用DBCC命令重建索引的。  
   
  数据库会自动分析数据,以期在决定查询步骤的时候找出正确的运行步骤。数据库在执行一个SQL命令之前、要编译它,用几十种可能的运行步骤检验,最后确定最好的步骤。  
   
  但是,错误的数据,会给数据库留下完全错误的编译结果。除非你每一次重复执行同一结构SQL命令之前都用DBCC命令强制数据库重新进行查询优化,否则它都会自动复用第一次的编译结果。  
   
  因此,模拟现实当中的数据要尽量与现实的数据值离散分布情况相似。搞数十万条基本重复的记录来代表数十万条离散分布的数据记录,是错误的做法。


    摘要: 我做的.net的应用程序中,在winform中播放flash,打包后在我们公司的机器上运行正常(打包中flash的播放程序肯定是打进去了)。 但到客户机器的时候,客户的环境全部是新的,数据库和操作系统都是新安装的。安装后运行到flash处出错。 但是过了一会,windows提示自动更新,允许,结束后再运行,却都好了。 请问这个更新是更新了什么啊?如何在一个全新的机器上安装能够不出错? 多谢......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE