CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

一千万左右的数据,且分布在不同的表,怎样能够在最短的时间里(1秒)按条件筛选出?

楼主hanbaojun(闲庭信步)2005-06-03 16:53:58 在 MS-SQL Server / 基础类 提问

用于显示在网页上,分页,每页显示20条左右。  
   
  第一次接触这么多数据,不知从何入手,请大家积思广议,给些建议! 问题点数:100、回复次数:25Top

1 楼fengfangfang()回复于 2005-06-03 16:56:05 得分 0

怎么像一秒种在大海里面找到掉进去的一根针一样呀  
   
  不会,关注Top

2 楼zjcxc(邹建)回复于 2005-06-03 17:05:32 得分 10

像楼主这样要求的话,那就无其它方法可以保障1秒检索出数据,唯一的办法是将服务器配置得够好,使其1秒钟能实现楼主的要求。Top

3 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-06-03 17:10:32 得分 30

优化查询,合理的建立索引,对大表进行分区,分区之后的表尽可能分布在不同的物理磁盘上。  
  另外,增加硬件投入,比如使用多CPU的PC服务器(SQL   Server授权许可使用多U),增大内存,使用磁盘阵列。Top

4 楼hdhai9451(☆新人类☆)回复于 2005-06-03 17:13:02 得分 0

什麼只用1秒?,如果用10秒能夠出來已經高興了!不同的表,又是海量數據,難做到?Top

5 楼7271747(帅的拖网速)回复于 2005-06-03 17:14:01 得分 0

路过,路过,仅仅是路过Top

6 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-03 17:15:01 得分 10

1。在1秒按条件筛选出,而且   是一千万左右的数据   。不太可能  
  2。可以创建分区视图,提高一点性能Top

7 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-03 17:15:31 得分 20

创建分区视图  
  分区视图在一个或多个服务器间水平连接一组成员表中的分区数据,使数据看起来就象来自一个表。Microsoft®   SQL   Server™   2000   区分本地分区视图和分布式分区视图。在本地分区视图中,所有的参与表和视图驻留在同一个   SQL   Server   实例上。在分布式分区视图中,至少有一个参与表驻留在不同的(远程)服务器上。此外,SQL   Server   2000   还区分可更新的分区视图和作为基础表只读复本的视图。  
   
  分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制使您能够扩大一组服务器,以支持大型的多层   Web   站点的处理需要。有关更多信息,请参见设计联合数据库服务器。  
   
  在实现分区视图之前,必须先水平分区表。在设计分区方案时,每个成员表所具有的数据必须非常明确。原始表被分成若干个较小的成员表。每个成员表包含与原始表相同数量的列,并且每一列具有与原始表中的相应列同样的特性(如数据类型、大小、排序规则)。如果正在创建分布式分区视图,则每个成员表分别位于不同的成员服务器上。为了获得最大程度的位置透明度,各个成员服务器上的成员数据库的名称应当是相同的,但不要求非这样。例如:Server1.CustomerDB、Server2.CustomerDB、Server3.CustomerDB。  
   
  成员表设计好后,每个表基于键值的范围存储原始表的一块水平区域。键值范围基于分区列中的数据值。每一成员表中的值范围通过分区列上的   CHECK   约束强制,并且范围之间不能重叠。例如,不能使一个表的值范围从   1   到   200000,而另一个表的值范围从   150000   到   300000,因为这样将不清楚哪个表包含   150000   与   200000   之间的值。    
   
  例如,正在将一个   Customer   表分区成三个表。这些表的   CHECK   约束为:  
   
  --   On   Server1:  
  CREATE   TABLE   Customers_33  
      (CustomerID       INTEGER   PRIMARY   KEY  
                                  CHECK   (CustomerID   BETWEEN   1   AND   32999),  
      ...   --   Additional   column   definitions)  
   
  --   On   Server2:  
  CREATE   TABLE   Customers_66  
      (CustomerID       INTEGER   PRIMARY   KEY  
                                  CHECK   (CustomerID   BETWEEN   33000   AND   65999),  
      ...   --   Additional   column   definitions)  
   
  --   On   Server3:  
  CREATE   TABLE   Customers_99  
      (CustomerID       INTEGER   PRIMARY   KEY  
                                  CHECK   (CustomerID   BETWEEN   66000   AND   99999),  
      ...   --   Additional   column   definitions)  
   
  在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。  
   
  生成分布式分区视图的方式如下:    
   
  在每一个含有在其它成员服务器上执行分布式查询所需连接信息的成员服务器上添加链接服务器定义。这将使得分布式分区视图能够访问其它服务器上的数据。  
   
   
  对于在分布式分区视图中使用的每个链接服务器定义,使用   sp_serveroption   设置   lazy   schema   validation   选项。这确保了只有在实际需要远程成员表的数据时,查询处理器才请求任何链接表的元数据,从而使性能得到优化。  
   
   
  在每个成员服务器上创建分布式分区视图。这些视图使用分布式   SELECT   语句访问链接成员服务器上的数据,并将分布式行与本地成员表的行合并。    
  若要为上一个示例创建分布式分区视图,应当:    
   
  为   Server2   添加一个名为   Server2   的、带有连接信息的链接服务器定义,并添加一个名为   Server3   的链接服务器定义以访问   Server3。  
   
   
  创建以下分布式分区视图:    
  CREATE   VIEW   Customers   AS  
        SELECT   *   FROM   CompanyDatabase.TableOwner.Customers_33  
  UNION   ALL  
        SELECT   *   FROM   Server2.CompanyDatabase.TableOwner.Customers_66  
  UNION   ALL  
        SELECT   *   FROM   Server3.CompanyDatabase.TableOwner.Customers_99  
   
  在   Server2   和   Server3   上执行相同的步骤。    
  Top

8 楼hanbaojun(闲庭信步)回复于 2005-06-03 17:22:01 得分 0

呵呵,看来有难度啊!Top

9 楼whatsouta(某疯子)回复于 2005-06-03 18:13:19 得分 0

基本属于不可能事件Top

10 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-06-03 20:40:58 得分 5

這個和機子的性能有關系的。  
   
  我想一般的機子是不可能的了  
   
  Top

11 楼LGame(JGame)回复于 2005-06-03 23:26:18 得分 0

强~~~~~Top

12 楼yxg80(林夕昱)回复于 2005-06-04 09:55:16 得分 0

晕,厉害!Top

13 楼hglhyy(為人民币服务!)回复于 2005-06-04 11:19:26 得分 0

海量数据库,运行也要时间的,1000W啊,老大,用一秒钟。一般的服务器应该是做不到的,用银河看怎么样!Top

14 楼hanbaojun(闲庭信步)回复于 2005-06-04 11:31:20 得分 0

像百度和google,他们一般是怎么做到的?Top

15 楼coolsunwind(飘)回复于 2005-06-04 20:07:25 得分 0

关注,学习!Top

16 楼good2speed(Goodspeed)回复于 2005-06-04 22:11:47 得分 0

有难度Top

17 楼asp1113()回复于 2005-06-05 00:03:18 得分 0

100MB   asp和   asp.net空间   50/1年  
  我看到了一个网站   100MB   asp和   asp.net空间   现在促销,  
  同学们可以做一个简单的个人网站用来找工作   ,  
    支持   asp.net   一年才50元!不要错过哦!!!  
  速度非常快,一般公司企业   足够用了!  
  http://www.hi876.com    
  希望能对大家有帮助Top

18 楼yjdn(人形机器)回复于 2005-06-05 02:25:10 得分 0

楼主用巨型机来试试,要不然用国内的银河....计算机也行~0~Top

19 楼yjdn(人形机器)回复于 2005-06-05 02:25:34 得分 0

^0^Top

20 楼asp1113()回复于 2005-06-05 08:48:43 得分 0

100MB   asp和   asp.net空间   50/1年  
  我看到了一个网站   100MB   asp和   asp.net空间   现在促销,  
  同学们可以做一个简单的个人网站用来找工作   ,  
    支持   asp.net   一年才50元!不要错过哦!!!  
  速度非常快,一般公司企业   足够用了!  
  http://www.hi876.com    
  希望能对大家有帮助Top

21 楼softj(天地客人<最近很迷茫>)回复于 2005-06-05 09:48:56 得分 15

最好从根本上考虑,优化数据库,你把数据库结构,查询条件贴出来,大家帮你想办法设计数据库吧Top

22 楼uxen()回复于 2005-06-06 03:51:52 得分 0

百度和google那是号几百台服务器,你跟他比?Top

23 楼greenhornH(胖子)回复于 2005-06-06 09:05:27 得分 0

跟google比?  
   
  哎~比不起啊~人家google那可是钱堆起来的~  
   
  Top

24 楼greenhornH(胖子)回复于 2005-06-06 09:22:13 得分 5

海量数据,硬件配置很重要啊  
   
  通过软的,无法实现。Top

25 楼cemma(佩)回复于 2005-06-06 09:53:43 得分 5

用服务器组吧。Top

相关问题

  • 报表数据筛选问题
  • 如何从同一个数据表中根据参数自动筛选数据?
  • 数据筛选的问题
  • NULL 数据的筛选
  • 数据筛选问题!
  • dataset如何筛选数据
  • 请问如何操作分布在两个数据库中的表数据?
  • 分布式数据库
  • 关于exel表格数据筛选再重新排列的问题!!高分求答案(100)
  • 对数据进行筛选问题

关键词

  • asp.net
  • 视图
  • 服务器
  • 分布式
  • 数据
  • 数据库
  • 查询
  • 性能
  • 分区
  • 表

得分解答快速导航

  • 帖主:hanbaojun
  • zjcxc
  • libin_ftsafe
  • duanduan1122
  • duanduan1122
  • Hopewell_Go
  • softj
  • greenhornH
  • cemma

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo