我需要检查查询中是否缺少一个或多个索引。
为了检查表中的索引,我使用语法:
SELECT index_name
, column_position
, column_name
FROM user_ind_columns
WHERE table_name = 'table_name'
ORDER BY index_name, COLUMN_POSITION;
SELECT index_name
FROM user_indexes
WHERE table_name = 'table_name';
Run Code Online (Sandbox Code Playgroud)
是否可以使用程序或 SQL 脚本自动查找查询中是否缺少索引并显示它以创建它们?
谢谢!
我有 2 张桌子:
我用过了:
有必要使用 drop、create、replace SQL 语法重新创建同义词,还是可以安全地按原样使用同义词而不重新创建它?
我已经运行了这个查询:
SELECT
OWNER,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
(CASE
WHEN DATA_PRECISION IS NULL THEN 0
ELSE DATA_PRECISION
END) DATA_PRECISION,
(CASE
WHEN DATA_SCALE IS NULL THEN 0
ELSE DATA_SCALE
END) DATA_SCALE,
NULLABLE,
COLUMN_ID
DEFAULT_LENGTH,
DATA_DEFAULT,
(CASE
WHEN DATA_DEFAULT IS NULL THEN '0'
ELSE DATA_DEFAULT
END) DATA_DEFAULT1
FROM
all_tab_columns
WHERE
table_name LIKE 'TABLE1';
Run Code Online (Sandbox Code Playgroud)
但它在 column 引发错误DATA_DEFAULT:
ORA-00932:不一致的数据类型:预期的 CHAR 得到了 LONG
00932。00000 - “不一致的数据类型:预期的 %s 得到了 %s”
我该如何解决?
谢谢!
我在下面选择了属性DEFAULT_LENGTH:
SELECT
TABLE_NAME,
COLUMN_NAME,
DATA_DEFAULT,
DEFAULT_LENGTH
FROM all_tab_columns
WHERE TABLE_NAME LIKE 'TEST2';
Run Code Online (Sandbox Code Playgroud)
为了更改DATA_DEFAULT,我使用了以下语法:
ALTER TABLE TEST2 MODIFY (COL1 DEFAULT 'en');
Run Code Online (Sandbox Code Playgroud)
如何使用类似的alter option语法DEFAULT_LENGTH进行更改?
谢谢!