0

使用 SQL Server 2012,我有一个表,目前有几十万行,并且会增长。

在此表中,我有一个 nvarchar(30) 字段,其中包含医疗记录编号 (MRN) 值。这些值几乎可以是任何字母数字值,但不是单词。

例如,

DR-345687
34568523
*45612345;T

我的应用程序允许最终用户在搜索字段中输入一个值,例如“456”。应用程序需要返回所有三个示例记录。

目前,我正在使用 Entity Framework 5.0,并要求进行一种field.Contains('456')搜索。

这总是需要 3-5 秒才能返回,因为它似乎是在进行表搜索。

我的问题是:在此列上创建全文索引会有助于提高性能吗?我还没有尝试过,因为我拥有的包含大量数据的数据库的唯一副本目前正在 QA 试验中。

查看全文索引的文档,它似乎围绕字段值中的单独单词进行了优化,因此我在不知道它可能如何影响我的查询性能的情况下犹豫是否要在创建索引时承受性能损失。

4

1 回答 1

1

EF 不会使用访问 SQL Server 全文索引 ( http://msdn.microsoft.com/en-us/library/ms142571.aspx#queries ) 所需的 T-SQL 关键字,因此您的解决方案不会没有更多的工作。

我认为您必须创建一个 SProc 才能使用 FTI 获取数据,然后让 EF 调用它。我有一个类似的问题,很想知道你的结果。

安迪

于 2013-06-27T11:47:27.323 回答