【发布时间】:2011-04-12 01:57:44
【问题描述】:
我们有一个数据库,其中包含大量有关人员的信息。我不会发布整个数据库结构,因为它太大了,但它看起来像这样:
人
身份证
名称
街道
城市
状态
国家
语言
语言代码
语言
兴趣
身份证
上次更改者
上次更改时间
本地化兴趣
兴趣ID
语言代码
说明
个人兴趣
个人ID
兴趣ID
现在,这只是一个小例子。在我们的数据库中,我们有大约 8-9 个本地化表(如兴趣表)可以链接到一个人。一个人可以有多个兴趣,一个人可以有多个工作,一个人可以有多个教育,一个人可以有多个经验,...
我必须建立一个搜索功能。假设您输入“tom”作为搜索词。这应该列出所有在他们的姓名、街道、城市、州、国家、在他们的一项兴趣、一项工作、一项教育、一项经验或一项其他链接表。
如果您输入多个单词进行搜索(例如“tom php”),它应该列出所有姓名中带有“tom”的人,街道,城市,州,国家,他们的兴趣之一,在他们的一项工作中,在他们的一项教育中,在他们的一项经验中或在其他链接表之一中和在他们的姓名、街道、城市、州、国家/地区中的“php”中,他们的兴趣、他们的一项工作、一项教育、一项经验或其他链接表之一。
目前 Person 表中大约有 4,500 条记录,如果我将 Person 与我必须搜索的所有表进行外连接,则大约有 1,300,000 条记录和 40-50 个字段可供搜索。
我应该如何解决这个问题才能使性能可以接受?客户期望在速度和易用性方面“与 Google 类似”。
我们使用的是 MS SQL Server 2000 和 ASP.NET 2.0。必须将搜索功能添加到现有应用程序中,并且不能更改技术或数据库结构。
【问题讨论】:
-
听起来像是索引视图的案例,由存储过程搜索。添加索引视图是“选项”吗?你并没有真正改变结构。
-
我认为我们必须使用外连接来构建该视图(当他没有工作或兴趣时仍然必须找到一个人)并且您不能在具有外连接的视图上放置索引加入。
标签: asp.net sql-server search sql-server-2000 asp.net-2.0