【发布时间】:2022-01-17 13:14:19
【问题描述】:
我有一个查询如下,需要为XYZ字段创建索引,能否在select语句中创建索引:
SELECT ABC,
CASE
WHEN B IS NULL AND C IS NOT NULL THEN CONCAT(C,'/',D)
WHEN B IS NOT NULL AND C IS NULL THEN CONCAT(B,'/',D)
WHEN C IS NOT NULL AND C IS NOT NULL THEN CONCAT(B,'/',C,'/',D)
ELSE -1
END AS XYZ,
FROM TABLE_NAME
WHERE ABC=123
由于这个 XYZ 字段在“from table”中不可用,我们无法像往常一样在 create table 中创建索引。 请帮忙。
谢谢
【问题讨论】:
-
查询结果上的索引有什么用?这是另一个查询的一部分吗?
-
通过
(ABC)或(ABC, B, C, D)创建索引。 由于这个XYZ字段在'from table'中不可用,我们无法像往常一样在create table中创建索引。你不需要这样的索引。或者您可以使用显示的表达式添加生成的列并对其进行索引。 -
.. WHEN C IS NOT NULL AND C IS NOT NULL ..列两次查是什么原因? -
你的CASE可以用简单的
CONCAT_WS('/', B, C, D)代替。