0

我有具有以下架构的表:

ID,firstName,MiddleName,LastName,FML,[其他一些列]

FML列由连接名、空格字符、中间名、空格字符和姓氏创建。当您知道 FML 时,我想搜索 persong。因此我的查询是

SELECT * from tbl where FML LIKE @Param

但我想优化这个查询,我正在考虑将输入字符串分成 firstName、MiddleName、LastName 字符串并像这样进行查询

SELECT * FROM tbl where firstName like @FN and MiddleName like @MN and LastName like @ln. 

也会查询

SELECT smth from tbl where Val='test'

然后在性能方面做得更好

Select smth from tbl where Val like 'test'

谢谢你。

4

2 回答 2

1

如果你的意思是 =,那么使用 =。如果你的意思是like,那么就用like。但是一旦给like加上通配符,性能就会下降。

通过对单独的字段进行分离和过滤,您失去了灵活性,但增加了在搜索中更具体的能力。因此,它本身并没有优化,因为功能不同。

假设您有两条记录,Jack Roberts 和 Robert Jack

如果您的查询是“%Robert%”,您的第一个查询允许您找到它们,而第二个查询允许您使用单独的查询找到它们。

于 2012-08-23T08:56:56.407 回答
0

是的 '=' 运算符提供最佳性能,而 LIKE 搜索所有具有 test 值的 Val。

于 2012-08-23T09:03:00.370 回答