Oracle Text error: DRG-10599: the colum is not indexed

Oracle Text error: DRG-10599: the colum is not indexed

SELECT
    c.ID AS "REFERENCIA",
    c.CIF_NIF AS "CIF",
    c.NUMERO_COMERCIO AS "COMERCIO",
    CASE
        WHEN c.RIESGO_REPUTACIONAL = 1 THEN 'Anexo 2B'
        WHEN c.RIESGO_REPUTACIONAL = 3 THEN 'Anexo 2A'
    END AS "RIESGO REPUTACIONAL",
    tp.NOMBRE AS "TECNOLOGIA",
    c.FECHA_INSERCION AS "FECHA CONTRATO",
    CASE
        WHEN av.FECHA_INSERCION IS NOT NULL THEN TO_CHAR(av.FECHA_INSERCION, 'YYYY-MM-DD HH24:MI:SS')
        ELSE 'No se ha validado todavía'
    END AS "FECHA VALIDACION",
    c.DENOMINACION_COMERCIAL_TICKET AS "DENOMINACION COMERCIAL",
    c.COD_SECTOR_ACTIVIDAD_VISAMC AS "CAI",
    (SELECT c2.CODIGO FROM CNAE c2 WHERE CONTAINS(c2.LISTA_CAIS, c.COD_SECTOR_ACTIVIDAD_VISAMC, 1) > 0)
FROM
    CONTRATO c
LEFT JOIN ANRI_VALORACION av ON
    av.ID_CONTRATO = c.ID
INNER JOIN PRODUCTO p ON
    c.ID_PRODUCTO = p.ID
INNER JOIN REL_PRODUCTO_TIPOPRODUCTO rpt ON
    rpt.ID_PRODUCTO = p.ID
INNER JOIN TIPO_PRODUCTO tp ON
    tp.ID = rpt.ID_TIPO_PRODUCTO
WHERE
    c.RIESGO_REPUTACIONAL IN (1, 3)
    AND c.ESTADO = 'CONTRATO'
    AND TO_DATE(c.FECHA_INSERCION) >= ADD_MONTHS(TRUNC(SYSDATE,'MM'),-1)
ORDER BY c.FECHA_INSERCION,c.ID ASC

所以在这里,它使我的查询失败,并且抛出一个错误,例如该列未在 (SELECT c2.CODIGO FROM CNAE c2 WHERE CONTAINS(c2.LISTA_CAIS, c.COD_SECTOR_ACTIVIDAD_VISAMC, 1) > 0) 行中编制索引。我的查询是在 Oracle 中,可能是什么问题?

"CONTAINS(c2.LISTA_CAIS" 表示必须在 LISTA_CAIS 列上定义 domain 索引。

查询 ALL_INDEXES 以获得 TABLE_NAME = 'CNAE'(假设这是一个 table,而不是视图或同义词)以找到 [=24= 的索引].这还会告诉您索引类型,这将告诉您它是否是文本(域)索引。

然后查询 ALL_IND_COLUMNS 这些索引以查看为哪些列定义了索引。

看来您必须将索引创建为

create index i1_cnae_lista on cnae (lista_cais) indextype is ctxsys.context;

另一方面,您可能不想使用 Oracle Text。 contains 是故意的,还是...?

因为,如果您不需要 Oracle Text,也许可以这样做(即 INSTR 函数):

SELECT c2.CODIGO FROM CNAE c2 
WHERE INSTR (c2.LISTA_CAIS, c.COD_SECTOR_ACTIVIDAD_VISAMC) > 0