+ -
当前位置:首页 → 问答吧 → 数据量大,插入修改删除都比较频繁,查询也频繁,怎么处理表?

数据量大,插入修改删除都比较频繁,查询也频繁,怎么处理表?

时间:2011-11-09

来源:互联网

有一张表T,数据量比较大,目前是几百万,以后可能还更多。
T 包含字段:t0 bigint(自动增长),t1 varchar,t2 int,t3 datetime,t4 datetime,t5 varchar
  一个应用A不停的插入和修改:根据t1和t2 判断该记录是否存在,如果存在更新,如果不存在插入。

  另一个应用B不停的查询,然后修改,根据 t3,t4,t5 查询符合条件的记录,取出来,然后做处理,然后更新 t5的值
  先查询:select t0,t1,t2 from T where t5='AA' and t4>getdate() and t3<getdate() 
  得到结果后,程序处理
  然后更新:update T set t5='bb 'where t0=@tO

  还有另一个应用C不停的查询,然后删除,根据 t4,t5 查询符合条件的记录,取出来,然后做处理,然后删除该记录
  先查询:select t0,t1,t2 from T where t5='bb' and t4<getdate() 
  得到结果后,程序处理
  然后更新:delete from T where t0=@tO


要求三个应用的响应速度都要快,现在插入,修改,删除我都用存储过程来实现。这种情况我在表上建聚集索引或者索引合适吗?索引应该怎么建立?

各位高手,麻烦您给支个招!!

作者: small_tu   发布时间: 2011-11-09

在t3,t4,t5列分别创建普通索引.

作者: qianjin036a   发布时间: 2011-11-09

当你的需求不能实现时,就可能需要改需求了.

作者: dawugui   发布时间: 2011-11-09

在標識列上建聚集索引
t2/t1建上索引

這是什麼數據,同時這類操作,表數據理不大,可以不用理

作者: roy_88   发布时间: 2011-11-09

引用 1 楼 qianjin036a 的回复:
在t3,t4,t5列分别创建普通索引.


t1 和 t2 不用管吗?A应用要先根据这两个字段进行查询,然后做修改或者插入的?

作者: small_tu   发布时间: 2011-11-09

引用 2 楼 dawugui 的回复:
当你的需求不能实现时,就可能需要改需求了.


需求就是这样的,不太好改啊!

作者: small_tu   发布时间: 2011-11-09

引用 3 楼 roy_88 的回复:
在標識列上建聚集索引
t2/t1建上索引

這是什麼數據,同時這類操作,表數據理不大,可以不用理


表数据量比较大啊,如果B应用或者C应用查询的时间太长,会影响A应用的写入吧?查询的时候会在表上加共享锁,就没法再写了吧?

作者: small_tu   发布时间: 2011-11-09