在sql 2000的数据库中插入、更新数据很慢,有没有解决办法

luoyinghua 2006-01-20 03:39:44
有一2.9g大小的数据库,在更新和插入数据时,速度很满,请问大家有没有什么好方法解决一下?
...全文
473 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rouqu 2006-01-23
  • 打赏
  • 举报
回复
你是怎么看一张表的大小的?
---------------------
表有多少行。。另外 执行sp_help sp_spaceused sp_constraint查看一下各方面的属性
chb5210 2006-01-22
  • 打赏
  • 举报
回复

To: rouqu(石林#黄果树)

你是怎么看一张表的大小的?
luoyinghua 2006-01-22
  • 打赏
  • 举报
回复
一个数据库有很多客户端,有插入数据的,有更新数据的,有查询的,你不可能一会儿删除索引,一会儿重建索引。谁有好方法共享一下,让小弟也学习学习。
glen_huang2046 2006-01-22
  • 打赏
  • 举报
回复
慢,我也慢啊
rouqu 2006-01-22
  • 打赏
  • 举报
回复
譬如说
---
select速度怎么样?所有表都很慢吗?
如果只是某张表 这张表多大?更新语句是否复杂?重整索引、收缩数据库看看
rouqu 2006-01-22
  • 打赏
  • 举报
回复
楼主 拿点数据说明过来吧 这样才好分析 要不很难说
OracleRoob 2006-01-22
  • 打赏
  • 举报
回复
你是怎么看一张表的大小的?
--------------------------
select sysTableTemp.UsersName + '.' + sysTableTemp.ObjectsName as CompleteName, sysTableTemp.IndexName, sysTableTemp.rows, case when sysTableTemp.indid = 1 Then 1 Else 0 End as IsClusteredIndex, (case when sysTableTemp.indid > 1 and sysTableTemp.indid <> 255 Then pageTableTemp.PageSize * sysTableTemp.NonClusteredDataUsed end) as NonClusteredDataUsed, (pageTableTemp.PageSize * (isnull(sysTableTemp.AllData, 0))) As DataSizeUsed, ( case when sysTableTemp.indid = 1 Then pageTableTemp.PageSize * (isnull(sysTableTemp.IndexSizeUsed, 0)- isnull(sysTableTemp.DataSizeUsed, 0)) end) AS ClustedDataUsed from ( select v.low / 1024 as PageSize from master..spt_values v where v.number=1 and v.type=N'E' ) as pageTableTemp, ( select sysindexes.indid, sysindexes.name as IndexName, sysobjects.name as ObjectsName, sysusers.name as UsersName, sysindexes.used as NonClusteredDataUsed, tempTable.DataSizeUsed, tempTable.IndexSizeUsed, tempTable.rows, tempTable.AllData from sysindexes, sysobjects, sysusers, ( select id, sum(case indid when 0 then sysindexes.dpages when 1 then sysindexes.dpages when 255 then isnull(sysindexes.used, 0) end) as DataSizeUsed, sum(case indid when 0 then isnull(sysindexes.used, 0) when 1 then isnull(sysindexes.used, 0) when 255 then isnull(sysindexes.used, 0) end) as IndexSizeUsed, sum(case indid when 0 then convert(int, rows) when 1 then convert(int, rows) end) as rows, sum(case when indid <= 0 then sysindexes.dpages + isnull(sysindexes.used, 0) else isnull(sysindexes.used, 0) end) as AllData from sysindexes group by sysindexes.id ) as tempTable where sysindexes.id = sysobjects.id and sysusers.uid = sysobjects.uid and tempTable.id = sysindexes.id and sysobjects.name not like '#%' and OBJECTPROPERTY(sysobjects.id, N'IsMSShipped') <> 1 and OBJECTPROPERTY(sysobjects.id, N'IsSystemTable') = 0 ) as sysTableTemp order by CompleteName, IsClusteredIndex DESC

--rows:表示记录行数
--DataSizeUsed:表示已用的KB数,如:24KB

或者在企业管理器中查看
-->选中你的DB
-->右键,查看,任务版
-->表信息页,GO
rouqu 2006-01-20
  • 打赏
  • 举报
回复
楼上 插入数据的时候如何禁用索引?请教一下
另外 不同意“插入数据的时候,删除索引,插入完毕,然后恢复索引”的说法
1 对于小表 没有必要这样做
2 对于达标 删除索引需要花费时间 重建索引也要花费一定的时间 性能上不会有很大的提升
pmz 2006-01-20
  • 打赏
  • 举报
回复
1,加大日志空间
2,优化SQL语句
3,插入或更新操作时禁用索引
pbsql 2006-01-20
  • 打赏
  • 举报
回复
硬件、运行环境、业务流程、结构设计。。。。。。说来话长
zlp321002 2006-01-20
  • 打赏
  • 举报
回复
--索引能提高查询效率,但会严重影响更新和插入数据的效率。
--插入数据的时候,删除索引,插入完毕,然后恢复索引
rouqu 2006-01-20
  • 打赏
  • 举报
回复
select速度怎么样?所有表都很慢吗?
如果只是某张表 这张表多大?更新语句是否复杂?看看EP是否利用到了索引还是全表扫描?调整一下索引,收缩数据库看看
luoyinghua 2006-01-20
  • 打赏
  • 举报
回复
我已经把聚集索引删除了,好象效果不明显
wangdehao 2006-01-20
  • 打赏
  • 举报
回复
不会是所有的表插入更新都慢吧?
如果只是比较大的表这样的话,把表上的索引删除试一下
luoyinghua 2006-01-20
  • 打赏
  • 举报
回复
如何优化表,楼上可否详细一点。
小辉 2006-01-20
  • 打赏
  • 举报
回复
使用 存储过程 设置索引 优化sql语句 或者优化表的设计 吧

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧