暂无图片
创建outline不生效
我来答
分享
暂无图片 匿名用户
创建outline不生效

【 使用环境 】测试环境
【 OB or 其他组件 】observer
【 使用版本 】企业版3.2.3/社区版3.1.3
创建outline一直不生效

有张表大概20000条数据,table 名test_otl, 字段(id int,name varchar(20))
创建了索引 idx_id(id)

select id from test_otl where id =1 这样现在是会走索引的,
我想测试让它走全表扫描,
select/*+FULL(test_otl)*/ id from test_otl where id =1;
使用explain select/*+FULL(test_otl)*/ id from test_otl where id =1; #查看确实走了全表扫描

创建outline
create outline otl_test on select/*+FULL(test_otl)*/ id from test_otl where id =1;

这样创建完成以后,按理说每次查询我都直接走全表扫描了,可是为啥还是走索引呢??? 命名空格啥的我都注意了啊

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

outline 建好后,实际sql 要跑一次。然后去查看 实际执行计划。不是看 EXPLAIN 结果。
类似下面,查看这个视图。

mysql> SELECT plan_depth, plan_line_id, operator,name,ROWS,cost 
    -> FROM oceanbase.GV$OB_PLAN_CACHE_PLAN_EXPLAIN 
    -> WHERE tenant_id=effective_tenant_id() AND  svr_ip = '10.0.0.66' AND svr_port=2882 AND plan_id=190;
+------------+--------------+------------------------+--------------+------+------+
| plan_depth | plan_line_id | operator               | name         | ROWS | cost |
+------------+--------------+------------------------+--------------+------+------+
|          0 |            0 | PHY_NESTED_LOOP_JOIN   | NULL         |    2 |  172 |
|          1 |            1 |  PHY_SUBPLAN_SCAN      | NULL         |    1 |  154 |
|          2 |            2 |   PHY_SCALAR_AGGREGATE | NULL         |    1 |  154 |
|          3 |            3 |    PHY_SUBPLAN_SCAN    | NULL         |    1 |  154 |
|          4 |            4 |     PHY_TABLE_SCAN     | bmsql_oorder |    1 |  154 |
|          1 |            5 |  PHY_TABLE_SCAN        | bmsql_oorder |    1 |   17 |
+------------+--------------+------------------------+--------------+------+------+
6 rows in set (0.05 sec)
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
以索引列为查询条件进行查询并用主键对结果进行排序,执行了全表扫描
回答 1
看起来是走了索引,但他似乎是先执行了全表排序再走的索引,如果用hint强制指定索引的话看起来就不会先走全表排序
索引列会存储空值列数据吗?
回答 1
会做编码压缩去存储isnull数值作为索引列都是一样的区分度不明显,没办法区分.这个业务场景是什么?正常索引列都是区分度比较高的
启动odc,提示java进程异常退出,请尝试重新启动
回答 1
建议升级ODC420版本,这个是个已知缺陷。如果是桌面版本的,可以卸载安装最新版本
oceanbase3.1.2版本创建outline限制sql并发执行max_concurrent不生效
回答 3
ERROR5268(HY000):SQLreachmaxconcurrentnum%ld错误原因:达到SQL限流上限。解决方式:降低并发量。参考OB官方https://www.oceanbase.co
通过OBD搭建的分布式,某一个zone毁坏后,怎么样能快速的新增一个zone?
回答 1
在集群里把P2的zone删掉,P2检查没问题之后再把zone加回来。
OceanBase 支持到OceanBase的dblink,支持到Oracle的dblink吗?
回答 2
已采纳
创建数据库链接在2.2.50支持,在2.2.76中又取消支持了吗?只支持创建OceanBase中的Oracle模式租户连接到另一个Oracle模式租户的数据库链接,OceanBase目前不支持创建连接
内存
回答 3
谢谢。你说的应该是纯开发方面经验,比较基础,OB开发和测试应该知道这些。我说的多是运维层面判断内存模块使用是否合理。感谢对OB的关注,可以加OB官方公众号进入OB微信群跟对OB感兴趣的网友(群里也有O
lock for read代码疑问
回答 1
“退出for循环的条件为retOBERRSHAREDLOCKCONFLICT或者for循环中的break”不对,retOBERRSHAREDLOCKCONFLICT是继续循环的条件,ret!OBERR
ob JSON_EXTRACT 函数 where对比时错误
回答 1
定位过程(以zy表为例,其中doc列为json字段):selectfromzywherejsonvalid(doc)0;找出不合法的json记录找出的json记录是空串(‘’)mysql/ob的jso
请教一下 gv$sysstat where name =‘clog trans log total size’ 对应value的单位是bytes么
回答 2
是的,gv$sysstatwherename'clogtranslogtotalsize'对应的value单位是bytes。||
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~