关于数据库设计的问题

时间:2011-08-14 10:00:13

标签: c# sql-server indexing

我在房地产公司工作,我们即将用C#开发新版本的Windows应用程序。

以下是当前情况的摘要:

我们有400万条记录并且有所增加,我们使用SQL Server 2005将这些记录存储在一个包含52列的表中。几乎所有最终用户在每次搜索时都使用至少30到40列。

我知道这不是标准设计,但我尝试了很多场景, 我已将这52列拆分为其他表并建立了主题之间的关系,但使用一个表时性能仍然更好(即使没有主键!)我添加了索引,但添加索引是不合逻辑的所有专栏。

我们还有其他限制,用户硬件,其中许多仍然有奔腾II。

另一方面,我们获得了 Google桌面搜索GDS 。我已经在他们的计算机上测试了这个应用程序,性能仍然很好。

SQL服务器和GDS引擎有什么区别?

是否可以使用GDS类似引擎来存储我的数据?这些存储的名称是什么?

3 个答案:

答案 0 :(得分:2)

  

是否可以使用GDS之类的引擎来存储我的数据?这些存储的名称是什么?

是的,这些被广泛称为NoSQL,并且有许多不同的“数据库”专门用于非关系数据存储。

话虽如此,在更大的计划中,有400万条记录甚至不是很多,但几乎可以肯定的是,数据库的设计在这里是错误的。在单个表设计最快的情况下,SQL Server等引擎非常擅长处理关系数据。看看this one等讨论,或者在做出任何决定之前,先了解一下数据库设计和优化。

答案 1 :(得分:1)

这实际上取决于您如何应用索引。此外,您可以使用一组用于应用程序的表和一组用于报告的表。通过这种方式,您可以提高报告的性能,并确保数据正确无误。因此,每当您获得关系数据结构的更新时,您都会有一个进程来获取该数据并将其迁移到您的数据库,这对于查询来说更快。

答案 2 :(得分:0)

GDS和SQL不一样。但是,SQL Server(作为可选组件)具有一个名为Full-Text Search的功能,可以帮助您实现所需的功能。

总的来说,我猜以下可能是一个很好的解决方案:

  • 规范化您的数据库 - 如果使用规范化的数据库没有获得更好的性能,那么您肯定没有设置正确的主键和外键。
  • 在需要搜索的文本字段上使用提到的FTS