各位大侠 现在公司的业务中需要经常性的查询,插入数据的表 
(需求是上千万条,实际200万条)
如果数据量太大的话 会导致查询比较慢 
曾想通过创建索引去解决这个查询慢的问题 
但是创建了索引以后 插入数据会经常出现超时 
目前的做法是每隔一段时间就删除表里面以前的一些记录  保证数据量在200万条左右 但是这样做总不是办法呀 ???
目前用的数据库是sql2000 我觉得sql2000管理几百万条数据问题应该不大呀 
各位大侠  有没有什么好一点的办法啊????谢了喔

解决方案 »

  1.   

    分区视图 
    分区视图是提高查询性能的一个很好的办法 
    --看下面的示例 --示例表 
    create table tempdb.dbo.t_10( 
    id int primary key check(id between 1 and 10),name varchar(10)) create table pubs.dbo.t_20( 
    id int primary key check(id between 11 and 20),name varchar(10)) create table northwind.dbo.t_30( 
    id int primary key check(id between 21 and 30),name varchar(10)) 
    go --分区视图 
    create view v_t 
    as 
    select * from tempdb.dbo.t_10 
    union all 
    select * from pubs.dbo.t_20 
    union all 
    select * from northwind.dbo.t_30 
    go --插入数据 
    insert v_t select 1 ,'aa' 
    union  all select 2 ,'bb' 
    union  all select 11,'cc' 
    union  all select 12,'dd' 
    union  all select 21,'ee' 
    union  all select 22,'ff' --更新数据 
    update v_t set name=name+'_更新' where right(id,1)=1 --删除测试 
    delete from v_t where right(id,1)=2 --显示结果 
    select * from v_t 
    go --删除测试 
    drop table northwind.dbo.t_30,pubs.dbo.t_20,tempdb.dbo.t_10 
    drop view v_t /**//*--测试结果 id          name      
    ----------- ---------- 
    1          aa_更新 
    11          cc_更新 
    21          ee_更新 (所影响的行数为 3 行) 
    ==*/ 
      

  2.   

    fredrickhu 我是这样理解你的分区视图的概念的 比如说 我可以把我每个月的数据都分别放在一个独立的表里面  然后通过视图来操作这些表 对吗??另外 一个数据库能承受的数据量有没有限制呢 目前我用的sql2000 数据库服务器的配置是4个双核的 3组磁盘阵列
      

  3.   

    建数据库任务,当insert表数据超过一定数量的时候,将老数据导入到另一个select表,如果继续膨胀再倒入第三个表...。select表是一定要建索引的。