使用SQL Server 2012,我有一个目前有几十万行的表,并且会增长。
在此表中,我有一个nvarchar(30)字段,其中包含医疗记录编号(MRN)值。这些值可以是任何字母数字值,但不是单词。
例如,
DR-345687
34568523
*45612345;T
我的应用程序允许最终用户输入一个值,比如搜索字段中的“456”。应用程序需要返回所有三个示例记录。
目前,我正在使用Entity Framework 5.0,并要求field.Contains('456')
类型的搜索。
由于它似乎进行表格搜索,因此返回总是需要3-5秒。
我的问题是:在此列上创建全文索引有助于提高性能吗?我还没有尝试过,因为我拥有大量数据的数据库的唯一副本目前正在QA试验中。
查看全文索引的文档,它看起来是围绕字段值中的单独单词进行优化的,所以我犹豫是否要在不知道如何创建索引的情况下创建索引可能会影响我的查询效果。
答案 0 :(得分:1)
EF不会使用访问SQL Server全文索引(http://msdn.microsoft.com/en-us/library/ms142571.aspx#queries)所需的T-SQL关键字,因此如果没有更多工作,您的解决方案将无法运行。
我认为你必须创建一个SProc才能使用FTI获取数据然后让EF调用它。我有类似的问题,有兴趣知道你的结果。
安迪