在PostgreSQL中使用POSIX正则表达式比LIKE和ILIKE有什么好处?
我正在构建SQL查询,我想知道使用posix正则表达式(如在PostgreSQL中使用POSIX正则表达式比LIKE和ILIKE有什么好处?,sql,regex,postgresql,sql-like,Sql,Regex,Postgresql,Sql Like,我正在构建SQL查询,我想知道使用posix正则表达式(如~、~*、!~、!~*)或如和ILIKE如何影响这些查询的性能。使用其中任何一种都会影响SQL查询的速度和性能吗?如果是,如何进行?哪个更适合使用 regex/like操作符要求数据库中发生某种事情,因此它们当然会以某种方式影响性能。。。但他们都做着特定的工作 ,但功能不多。根据,LIKE功能非常专业化,因此与等效的正则表达式相比可能更具性能 哪个更适合使用 并非所有文本都可以像一样匹配,因此在这些情况下,您必须使用正则表达式。但是如果L
~、~*、!~、!~*
)或如和ILIKE如何影响这些查询的性能。使用其中任何一种都会影响SQL查询的速度和性能吗?如果是,如何进行?哪个更适合使用 regex/like操作符要求数据库中发生某种事情,因此它们当然会以某种方式影响性能。。。但他们都做着特定的工作
,但功能不多。根据,LIKE
功能非常专业化,因此与等效的正则表达式相比可能更具性能
哪个更适合使用
并非所有文本都可以像
一样匹配,因此在这些情况下,您必须使用正则表达式。但是如果LIKE
就足够了,那么链接的答案表明使用它会更好
如果您关心某个特定的查询,请使用postgres来查看postgres的实际用途。根据我的研究,
POSIX正则表达式比使用LIKE和ILIKE子句更适用,因为它有一些优点:
速度
简单子句查询
以下是posix正则表达式用法的一些示例:
~tilde用于区分大小写
POSIX: SELECT record FROM mytable WHERE record ~ 'a';
LIKEi: SELECT record FROM mytable WHERE record like '%a%';
POSIX: SELECT record FROM mytable WHERE record !~ 'a';
LIKEi: SELECT record FROM mytable WHERE record not like '%a%';
~*不区分大小写
POSIX: SELECT record FROM mytable WHERE record ~ 'a';
LIKEi: SELECT record FROM mytable WHERE record like '%a%';
POSIX: SELECT record FROM mytable WHERE record ~* 'a';
LIKEi: SELECT record FROM mytable WHERE record ilike '%A%';
POSIX: SELECT record FROM mytable WHERE record !~ 'a';
LIKEi: SELECT record FROM mytable WHERE record not like '%a%';
POSIX: SELECT record FROM mytable WHERE record !~ 'a';
LIKEi: SELECT record FROM mytable WHERE record not ilike '%a%';
!~排除/不排除(区分大小写)
!~*排除/不排除(不区分大小写)
posix正则表达式的一些其他用法,如和ILIKE,可以找到