Sql 快速搜索一个人';姓名

Sql 快速搜索一个人';姓名,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我很想知道用于检索个人信息的最佳快速搜索查询。目前,我们有一个数据库,其中包含名、姓和称呼栏。应该允许用户搜索这些列的任何排列和组合。简单的搜索查询占用了大量时间,因此使快速搜索速度变慢(因为查询需要扫描所有行中的名字、姓氏和称呼)。你能分享一下可以用于此目的的各种快速或高级技术吗 1.您可以为您认为大部分时间都要搜索的列创建索引。 2.您可以将名字+姓氏组合并保留在一个视图中(并且该视图将在每次插入姓名时更新),然后通过该视图进行查询,而不是通过数据库进行查询。 您需要一个适当的查询执行计划。

我很想知道用于检索个人信息的最佳快速搜索查询。目前,我们有一个数据库,其中包含名、姓和称呼栏。应该允许用户搜索这些列的任何排列和组合。简单的搜索查询占用了大量时间,因此使快速搜索速度变慢(因为查询需要扫描所有行中的名字、姓氏和称呼)。你能分享一下可以用于此目的的各种快速或高级技术吗

1.您可以为您认为大部分时间都要搜索的列创建索引。 2.您可以将名字+姓氏组合并保留在一个视图中(并且该视图将在每次插入姓名时更新),然后通过该视图进行查询,而不是通过数据库进行查询。 您需要一个适当的查询执行计划。请查看这些计划以获得战略解决方案

您必须在这3列firstname、lastname和saltation上创建索引,因此通过创建索引,它将快速搜索查询的性能点。我们创建索引的速度非常快。要了解如何加快查询速度,我认为全文搜索应该可以解决您的问题(假设数据库是MS SQL Server) 供您参考的快速链接


我无法对这个问题发表评论,因为我的声誉很低

这是前缀搜索还是直接比较?表中有多少行?搜索结果中有多少行?(全部或分页?)称呼的选择性是什么?我假设一些值非常常见,例如“Mr”,其他值则不太常见(例如“Dr”)?有4601802行。是的,这些值是常见的,在本例中,我们显示了前200行。这是对firstname或last name以及称呼(可选)的直接比较。您链接的文章是关于索引视图的。它们不会比普通索引更有用。将名字和姓氏组合在一起对此处的搜索性没有任何好处。FTS(使用包含)将比将LIKE与通配符结合使用更快/更高效。FTS包括定义全文索引的功能,FTS可以使用全文索引。例如,左侧的通配符(如“%Search”)不能使用索引(假设列存在索引),从而保证表扫描。我没有进行测试和比较,但regex也有同样的缺陷。为了澄清,像“%Search”和像“%Search%”不能使用索引;像“Search%”可以使用索引,我目前正在查询中使用索引。