我在房地产公司工作,我们即将用C#
开发新版本的Windows应用程序。
以下是当前情况的摘要:
我们有400万条记录并且有所增加,我们使用SQL Server 2005
将这些记录存储在一个包含52列的表中。几乎所有最终用户在每次搜索时都使用至少30到40列。
我知道这不是标准设计,但我尝试了很多场景, 我已将这52列拆分为其他表并建立了主题之间的关系,但使用一个表时性能仍然更好(即使没有主键!)我添加了索引,但添加索引是不合逻辑的所有专栏。
我们还有其他限制,用户硬件,其中许多仍然有奔腾II。
另一方面,我们获得了 Google桌面搜索GDS
。我已经在他们的计算机上测试了这个应用程序,性能仍然很好。
SQL
服务器和GDS
引擎有什么区别?
是否可以使用GDS
类似引擎来存储我的数据?这些存储的名称是什么?
答案 0 :(得分:2)
是否可以使用GDS之类的引擎来存储我的数据?这些存储的名称是什么?
是的,这些被广泛称为NoSQL,并且有许多不同的“数据库”专门用于非关系数据存储。
话虽如此,在更大的计划中,有400万条记录甚至不是很多,但几乎可以肯定的是,数据库的设计在这里是错误的。在单个表设计最快的情况下,SQL Server等引擎非常擅长处理关系数据。看看this one等讨论,或者在做出任何决定之前,先了解一下数据库设计和优化。
答案 1 :(得分:1)
这实际上取决于您如何应用索引。此外,您可以使用一组用于应用程序的表和一组用于报告的表。通过这种方式,您可以提高报告的性能,并确保数据正确无误。因此,每当您获得关系数据结构的更新时,您都会有一个进程来获取该数据并将其迁移到您的数据库,这对于查询来说更快。
答案 2 :(得分:0)
GDS和SQL不一样。但是,SQL Server(作为可选组件)具有一个名为Full-Text Search的功能,可以帮助您实现所需的功能。
总的来说,我猜以下可能是一个很好的解决方案: