我继承了一个数据库(我们都不喜欢那个),而且一张桌子已经失控了。
数据库超过50 GB。 我对它进行了碎片整理以及重新索引,但这没有帮助。 问题是该表有236列和大约23000行。 不,这不是一个错字!
我能看到的唯一解决方案是打破桌面。 .Net应用程序在我们的Intranet上,我已经优化了它包含的每一段代码以及存储过程。
该表包含TempHigh,TempLow和TempMed等信息。其他因素包括High,Low和Med在整个表格中的重复。因此,每个High,Low和Med都将成为自己的表,外键指向父表。
这将在访问数据和更新时创建大量JOIN。
这是我能看到的唯一可以解决问题的方法。
我的问题是,我是否忽略了解决此问题的更好方法?
欢迎提出任何建议。
感谢!!!
修改
为了澄清,我在数据库上运行了一个碎片整理以及重新索引。 我已经在Web和数据库服务器上打开了性能监视器。
感谢您的评论。我会尽力回答你的问题。首先,我已将数据库复制到我的.Net开发环境中,即使只是登录,它也很慢。并将.Net应用程序移动到与sql server相同的服务器上以测试连接问题。同样的问题。这是一个事务系统(OLTP)。有些列我已经移动到他们自己的表中,因为他们正在重复自己,并在他们的位置使用外键(没有约束)的新列。没有图像,只有数据。
以下是该表的规格:
TableName SchemaName RowCounts TotalSpaceKB UsedSpaceKB UnusedSpaceKB
MyTable dbo 22904 45192 45160 32
答案 0 :(得分:3)
我是否忽略了解决此问题的更好方法?
是的:
我见过大小 terabytes 的数据库仍然表现良好(每天添加/上传数千条记录)。关键是确定最慢的操作并添加/更新索引以优化这些操作。