postgreSQL 数组中模糊匹配

最近工作需要 模糊查询数组中数据,
第一种方法是
SELECT
    *
FROM
    tab_tv_info T
WHERE
    1 = 1
AND EXISTS (
    SELECT DISTINCT
        *
    FROM
        (
            SELECT
                tvid,
                UNNEST (actor) actorname
            FROM
                tab_tv_info
        ) r
    WHERE
        r.tvid = T .tvid
    AND (r.actorname LIKE '%张艺谋%' or r.actorname LIKE '%高仓健%' )
)
 
我感觉UNNEST () 是把数组转换成一维数组,尤其是有多个条件的情况下。这种方法是全表扫描,效率要慢
 
我又想到第二种方法
SELECT
    *
FROM
    tab_tv_info T
WHERE
    1 = 1
AND array_to_string(alias, ',', '*') LIKE '%天天有喜2%'
 
 
这种方法是把数组转换成字符串,array_to_string() 方法,  然后用like 这样效率要高很多。

猜你喜欢

转载自dichaoying.iteye.com/blog/2302968
今日推荐