在PostgreSQL中使用POSIX正则表达式比LIKE和ILIKE有什么好处?

在PostgreSQL中使用POSIX正则表达式比LIKE和ILIKE有什么好处?,sql,regex,postgresql,sql-like,Sql,Regex,Postgresql,Sql Like,我正在构建SQL查询,我想知道使用posix正则表达式(如~、~*、!~、!~*)或如和ILIKE如何影响这些查询的性能。使用其中任何一种都会影响SQL查询的速度和性能吗?如果是,如何进行?哪个更适合使用 regex/like操作符要求数据库中发生某种事情,因此它们当然会以某种方式影响性能。。。但他们都做着特定的工作 ,但功能不多。根据,LIKE功能非常专业化,因此与等效的正则表达式相比可能更具性能 哪个更适合使用 并非所有文本都可以像一样匹配,因此在这些情况下,您必须使用正则表达式。但是如果L

我正在构建SQL查询,我想知道使用posix正则表达式(如
~、~*、!~、!~*
)或
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,可以找到