您的位置:58编程 > oceanbase使用 OceanBase 访问路径概述

oceanbase使用 OceanBase 访问路径概述

2023-05-08 17:33

oceanbase使用 OceanBase 访问路径概述

oceanbase使用 OceanBase 访问路径概述

oceanbase使用

访问路径是指数据库中访问表的方法,即使用哪个索引来访问表。

访问路径的分析是单表查询的最重要的问题之一,对于使用主表扫描的访问路径来说,执行时间一般与需要扫描的数据量(范围)成正比。一般来说,可以使用 ​EXPLAIN EXTENDED​ 命令,将表扫描的范围段展示出来。对于有合适索引的查询,使用索引可以大大减小数据的访问量,因此对于使用主表扫描的查询,要分析没有选中索引扫描的原因,是由于不存在可用的索引,还是索引扫描范围过大以至于代价过高。

OceanBase 数据库的路径选择方法融合了基于规则的路径选择方法和基于代价的路径选择方法。OceanBase 数据库首先会使用基于规则的路径选择方法,如果基于规则的路径选择方法之后只有一个可选择的路径,那么就直接使用该路径,否则就再使用基于代价的路径选择方法选择一个代价最小的路径。

在 OceanBase 数据库中,用户可以通过 HINT 来指定访问路径。访问路径的 HINT 形式如下: ​/+INDEX(table_name index_name)/

其中 ​table_name​ 表示表的名字,​index_name​ 表示索引的名字。如果 ​index_name​ 是 PRIMARY,代表选择主表扫描路径。

如下为用 HINT 来指定访问路径的示例:

obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, d INT, INDEX k1(b,c));
Query OK, 0 rows affected (0.10 sec)

obclient>EXPLAIN SELECT * FROM t1;
| ===================================
|ID|OPERATOR  |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|t1  |1000     |476 |
===================================

Outputs & filters:
-------------------------------------
  0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil),
      access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0)


obclient>EXPLAIN SELECT * FROM t1;
| =====================================
|ID|OPERATOR  |NAME  |EST. ROWS|COST|
-------------------------------------
|0 |TABLE SCAN|t1(k1)|1000     |5656|
=====================================

Outputs & filters:
-------------------------------------
  0 - output([t1.a], [t1.b], [t1.c], [t1.d]), filter(nil),
      access([t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0)
阅读全文
以上是58编程为你收集整理的oceanbase使用 OceanBase 访问路径概述全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS