Jul*_*ira 5 index oracle oracle-11g-r2
我们目前正在使用 ALL_IND_COLUMNS 来检查索引是否存在通过其名称或它正在使用的列。问题是我们只能检查索引是否存在特定顺序的列。
我们需要检查一个表是否有任何名称的索引,但 Column1、Column2 和 Column3 的顺序是任意的。我们应该怎么做?
可以检查是否存在使用多个列的索引。
WITH
index_cols AS (
SELECT
table_name,
index_name,
COLLECT(column_name) AS column_names
FROM all_ind_columns
WHERE table_name = '&table_name'
GROUP BY
table_name,
index_name
),
target_cols AS (
SELECT '&column_name_1' AS col_name FROM dual
UNION SELECT '&column_name_2' FROM dual
)
SELECT
ic.*
FROM index_cols ic
WHERE
(
SELECT COUNT(*)
FROM target_cols tc
JOIN TABLE(ic.column_names) icc
ON (tc.col_name = icc.COLUMN_VALUE)
) = (
SELECT COUNT(*)
FROM target_cols
)
;
Run Code Online (Sandbox Code Playgroud)
是一种(有点复杂)的方法。
但正如aasim.abdullah在评论中指出的那样,同一列集上但顺序不同的两个索引并不相同。并且可以并排放置两个索引。
归档时间: |
|
查看次数: |
2937 次 |
最近记录: |