包含 400 万条记录的表 - 开发和生产中的不同大小和性能

5 sql-server-2008 sql-server sql-server-2008-r2

在我公司,我们使用 SQL Express 2008 R2,它支持高达 10GB 的数据库。

我们有 2 个数据库,所有表中的行数几乎相同。但是,其中一个大小为 4.5 GB(在开发部门),另一个(生产中的)大小为 9.87GB。

正在开发的数据库是通过批量插入行以进行测试自动生成的。而在生产中的数据库,慢了将近 1 年才能生成如此大量的数据。

特别是一张表,有 4,700,000 行,并进行以下查询:

SELECT colum1,column2 FROM table WHERE column1 = 2
Run Code Online (Sandbox Code Playgroud)

在生产数据库上响应大约需要 2 分钟,在开发数据库中大约需要 20 秒。

我在生产数据库中做了一个收缩,大约需要 20 分钟才能完成,但之后,数据库的大小减少到 7 GB。我尝试通过右键单击重建索引,但它超时并且无法完成重建。

我的问题是:为什么具有相同记录数量的 2 个数据库的大小如此不同,我可以做些什么来提高生产数据库的性能?

谢谢。-

pap*_*zzo 0

我怀疑如果您使用 SSMS 右键单击​​,这只是超时。
需要将重建运行为 TSQL 语句。
您可以右键单击 SSMS 并获取删除和重建索引的语法。

至于大小,碎片索引需要更多空间。
鉴于索引重建超时并且查询时间差异很大,您很可能会出现严重碎片化的索引。

您甚至应该对开发数据库进行碎片整理。