我正在搜索框中搜索数据库中的用户名。该数据库具有firstname和lastname字段。我想搜索这些字段以查找与查询匹配的用户。所以我想出了这个:
SELECT *
FROM user
WHERE (firstname + ' ' + lastname) LIKE ('%' + @query + '%')
它有效,但我不确定这是不是最好的方法。特别是随着数据库变大。有更好的解决方案还是足够?
答案 0 :(得分:4)
查看SQL Server的全文索引功能:http://msdn.microsoft.com/en-us/library/ms142571.aspx
这可能有点重构,但搜索索引而不是逐行搜索效率要高得多。
如果你长大了,你总能考虑像Lucene.Net这样的东西。它在查询运算符方面具有更大的灵活性。它是一个完全独立的索引和查询引擎,所以它可能需要相当多的重构。需要考虑的事情。
答案 1 :(得分:0)
在db中添加计算列:http://msdn.microsoft.com/en-us/library/ms191250.aspx 然后查询该列
答案 2 :(得分:0)
以获得所有可能的搜索用户的最佳方式是单独比较它以通过插入的搜索文本获取用户,但因为它不会在搜索中包含全名。因此,为了包括全名,我们正在考虑全名,也可以在两者之间留一个空格。
(First_Name LIKE '%' + @SearchText + '%') OR (Last_Name LIKE '%' + @SearchText + '%') OR (First_Name + ' ' + Last_Name LIKE '%' + @SearchText + '%')