预处理查询(PREPARED STATEMENT)的用途是用于高效地重复执行相同(或相似)SQL 语句,避免重复解析和构建计划。本文将通过一个实例演示如何在 ByteHouse 企业版控制台的数据查询中使用预处理查询,具体的语法和详细介绍请参见预处理查询 PREPARED STATEMENT。
在使用之前,请确认使用的集群引擎版本已升级到 2.5 或以上。
本文将以系统表 system.numbers 为例,演示如何创建一个预处理查询、快速执行一些查询命令,以及删除预处理查询。
登录 ByteHouse 企业版控制台,单击数据查询,输入创建预处理查询的命令。示例命令如下,其中[i: UInt32] 是参数化语法,用于定义一个名为 'i'、类型为 'UInt32' 的参数,以便执行时传入具体值:
CREATE PERMANENT PREPARED STATEMENT prep1 AS SELECT count() FROM (SELECT number FROM system.numbers LIMIT 10) WHERE number < [i: UInt32];
在页面下方,单击节点配置,选择全部节点,并勾选所有查询,单击运行。
系统返回“执行成功”,则表示预处理查询创建完成。
刷新左侧数据对象列表,可以在“预处理查询”文件夹中看到已创建名为 “prep1” 的预处理查询。
将鼠标光标悬浮在该预处理查询上,可以预览其 SQL 语句内容。
在数据查询中,单击 + 号,创建新窗口,输入执行预处理查询的命令。示例命令如下:
EXECUTE PREPARED STATEMENT prep1 USING i = 5;
勾选“全部节点”、“所有查询”后,单击运行。
可以看到系统完成了查询操作,并输出对应的结果。
此操作相当于系统执行了以下语句。
SELECT count() FROM (SELECT number FROM system.numbers LIMIT 10) WHERE number < 5;
USING后的部分,可以快速使用预处理查询功能。注意,查询时需勾选“全部节点”。如需基于当前的预处理查询创建新的查询,您可使用克隆功能。
操作步骤:
ByteHouse 支持通过 SQL 语句或在控制台管理页面删除预处理查询。
在 ByteHouse 企业版控制台上,单击数据管理,选择目标集群,单击预处理查询名称,在预处理查询预览页面上,单击 ... 按钮,单击删除,确认需删除的预处理查询无误后,单击确定。
系统将返回删除成功提示,表示操作执行成功。
在 ByteHouse 企业版控制台上,单击数据查询,创建新窗口,输入删除预处理查询的命令。示例命令如下:
DROP PREPARED STATEMENT prep1
选择全部节点和所有查询,单击运行。
系统返回“执行成功”,则表示操作完成。