【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】CE-4.2.1.3
【问题描述】为一个查询SQL绑定了一个执行计划,但是绑定失败
【复现路径】
-- 创建表t2
CREATE TABLE `t2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`col1` varchar(33) DEFAULT NULL,
`col2` varchar(33) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_col1_t2` (`col1`)
);
-- 查询
SELECT * FROM t2 WHERE id = 3 and col1 = '1';
-- 查看执行计划
EXPLAIN EXTENDED_NOADDR
SELECT * FROM t2 WHERE id = 3 and col1 = '1';
-- 使用 idx_col1_t2 索引
EXPLAIN EXTENDED_NOADDR
SELECT /*+ index(t2 idx_col1_t2) */ * FROM t2 WHERE id = 3 and col1 = '1';
-- 删除同名OUTLINE
DROP OUTLINE bind_outline_test;
-- 创建OUTLINE
create outline bind_outline_test on SELECT /*+ index(t2 idx_col1_t2) */ * FROM t2 WHERE id = 3 and col1 = '1';
-- 查询是否有OUTLINE
SELECT * FROM oceanbase.DBA_OB_OUTLINES t where t.OUTLINE_NAME = 'bind_outline_test';
-- 查询计划是否绑定
SELECT
SQL_ID,
PLAN_ID,
STATEMENT,
OUTLINE_ID,
OUTLINE_DATA
FROM
oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT
WHERE
STATEMENT LIKE '%SELECT * FROM t2 WHERE id = ? and col1 = ?%'
【附件及日志】