gpt4 book ai didi

c# - SQL LIKE 语句或 C# foreach 检查?

转载 作者:行者123 更新时间:2023-11-29 14:09:21 35 4
gpt4 key购买 nike

我需要从 PostgreSQL 数据库中选择记录。假设这是我的表(非常简单)

Table1

ID Name Surname
1 Stan Marsh
2 Randy Marsh
3 Marry Christmas

我需要按姓名+姓氏筛选的结果,以便当筛选字符串为例如“ar”时。返回所有记录,ans "sh"只会返回前两条。我正在使用:

select * FROM Table1
WHERE concat(Table1.Name::text, Table1.Surname::text) LIKE '%ar%'

然后我使用 C# 中的结果作为记录列表。现在我想知道这是如何在性能方面发挥作用的。

遍历列表中的所有记录并选择正确的记录不是更好吗?什么会使所提到的陈述表现得更糟或更好?很多记录?他们的品种?或者这些选项中的一个只是更好?

我每次都使用“LIKE '%%'”(当没有过滤器时)提到的语句是不是很糟糕?

最佳答案

正如 dasblinkenlight 指出的那样,也许这不是您真正想要的,因为您最终可能会得到将一部分姓名和一部分姓氏作为匹配项的结果。如果您想同时过滤 name 和 surname,您可能更愿意在它们之间包含一个空格:

select * FROM Table1
WHERE concat(concat(Table1.Name::text, ' '), Table1.Surname::text) LIKE '%ar%'

但是,CONCAT 函数在性能方面不容忽视。如果您不介意分别检查名字和姓氏,这对您来说会更快:

select * FROM Table1
WHERE Table1.Name::text LIKE '%ar%' OR Table1.Surname::text LIKE '%ar%'

可以肯定的是,稍后在 C# 中获取所有数据和过滤总是比较慢。

关于c# - SQL LIKE 语句或 C# foreach 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48189618/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com