應該算得上是壓大表了,設計表的時候,應該考慮數據的冗余性,是不是有些些數據可以把它分開?有幾個nvarchar(200)的字段可以考慮把它放到另外一個表中,因為它數據大,影射查詢速度的可能性很大,把它放到另個一個可以通過代碼把安們連接起來

解决方案 »

  1.   

    表中有些列是這樣的,機器最多的有5個物件的數據AP1,AP2,AP3,AP4,AP5,AP6,AP7,AP8,
    BP1,BP2,BP3,BP4,BP5,BP6,BP7,BP8
    ...............................
    EP1,EP2,EP3,EP4,EP5,EP6,EP7,EP8現在我把這些數據放在一行中所以列數就多了
    我知道可以如多行來存數據
    PID,P1,P2,P3,P4,P5,P6,P7,P8但是這樣那有幾個大字段 nvarchar(200) 就重復的很歷害(我想過這些可以另建一表,只是最後再多關聯一個表),
    這樣最後網格數據就要進行 行轉列後再關聯二,三個表,現在這不知道這兩種數據存放格式那一種會快
    數據每天操作的有3K-->6K數請大家說說那種方式會快點? 
      

  2.   

    回复人: zjcxc(邹建) ( ) 信誉:316  2004-03-08 15:29:55Z  得分: 0  
     
     
       
    行列转换最适合的处理是在前台处理,而不是后台.
      
     
    這句話中的前台,后台分別是指是什麼???
      

  3.   

    水平分区
    水平分区将一个表分段为多个表,每个表包含相同数目的列和较少的行。例如,可以将一个包含十亿行的表水平分区成 12 个表,每个小表代表特定年份内一个月的数据。任何需要特定月份数据的查询只引用相应月份的表。具体如何将表进行水平分区取决于如何分析数据。将表进行分区是为了使查询引用尽可能少的表。否则,查询时须使用过多的 UNION 查询来逻辑合并表,而这会削弱查询性能。有关查询水平分区的表的更多信息,请参见视图使用方案。 常用的方法是根据时期/使用对数据进行水平分区。例如,一个表可能包含最近五年的数据,但是只定期访问本年度的数据。在这种情况下,可考虑将数据分区成五个表,每个表只包含一年的数据。垂直分区
    垂直分区将一个表分段为多个表,每个表包含较少的列。垂直分区的两种类型是规范化和行拆分。规范化是个标准数据库进程,该进程从表中删除冗余列并将其放到次表中,次表按主键与外键的关系链接到主表。行拆分将原始表垂直分成多个只包含较少列的表。拆分的表内的每个逻辑行与其它表内的相同逻辑行匹配。例如,联接每个拆分的表内的第十行将重新创建原始行。与水平分区一样,垂直分区使查询得以扫描较少的数据,因此提高查询性能。例如有一个包含七列的表,通常只引用该表的前四列,那么将该表的后三列拆分到一个单独的表中可获得性能收益。应谨慎考虑垂直分区操作,因为分析多个分区内的数据需要有联接表的查询,而如果分区非常大将可能影响性能。