数据库中的查询改写(Query Rewrite)是指将一个 SQL 改写成另外一个更加容易优化的 SQL。
OceanBase 数据库所支持的查询改写规则分为基于规则的查询改写和基于代价的查询改写。
基于规则的查询改写总是会把 SQL 往“好”的方向进行改写,从而增加该 SQL 的优化空间。一个典型的基于规则的改写是把子查询改写成联接。如果不改写,子查询的执行方式只能是 Nested Loop Join,改写之后,优化器就也可以考虑 Hash Join 和 Merge Join 的执行方式。
基于代价的查询改写并不能总是把 SQL 往“好”的方向进行改写,需要使用代价模型来判断。一个典型的基于代价的改写就是 Or-Expansion。
在数据库中,一个改写规则通常需要满足特定的条件才能够实现,而且很多规则的改写可以互相作用(一个规则的改写会触发另外一个规则的改写)。OceanBase 数据库把所有基于规则的查询改写分成若干个规则集合。对于每个规则集合,OceanBase 数据库采用迭代的方式进行改写,一直到 SQL 不能被改写为止或者迭代次数达到预先设定的阈值。类似地,对于基于代价的改写规则也是采用这种方式处理。
这里需要注意的是,基于代价的改写之后可能又会重新触发基于规则的改写,所以整体上的基于代价的改写和基于规则的改写也会采用这种迭代的方式进行改写。
SQL Plan Management(SPM)是一种稳定执行计划、控制计划演进的机制,确保新生成的计划在经过验证后才能使用,保证计划性能朝好...
数值类型可以划分为三类:整数类型:BOOL/BOOLEAN、TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER、BIGINT...
在使用 OceanBase Connector/J 驱动程序前,在应用程序的开头需加入import语句,以导入相应的程序包。导入语句和作用如下表所示...
我们已经看到了带有get的Moralis.Query如何从Moralis中检索单个Moralis.Object。还有许多其他方法可以使用Moralis...
转移ERC721代币(不可替代)要转移ERC721代币,请执行以下步骤:构造一个options对象并设置:type:“erc721”receiver:"0x...