UET05

列上不存在 Etx 索引或优化器选择非索引扫描。

etx_contains() 运算符正在用于没有 etx 索引的列上。请确保已在该列上创建 etx 索引。

该错误也可能发生在有 etx 索引的情况下,但是查询优化器在计算 etx_contains() 运算符时没有选择使用该索引。SQL 命令 SET EXPLAIN ON 可以提供有关要执行查询的查询优化器所用策略的更多信息。 GBase 8s 建议您尝试重写查询以强制优化器使用索引。

例如,假设以下查询返回 EUET05 错误,而且 etx 索引存在于 etx_contains() 运算符中指定的列上:
SELECT id FROM recipes 
    WHERE id = 1 
    OR etx_contains (ingredients, 'eggs');
强制优化器使用 etx 索引的一种方法是执行以下两个查询,而不是原始查询:
SELECT id FROM recipes 
    WHERE etx_contains (ingredients, 'eggs')
    INTO TEMP t1;
SELECT id FROM recipes 
    WHERE id = 1 OR id IN (SELECT id FROM t1);

请参阅优化查询,以获取相关讨论。