Mysql预编译
背景:
需要根据集群个数查询集群相关信息,但是集群个数是个动态值,那么应该怎么样办?
分析:
1)先查询出distinct clusterName的个数
2)然后根据查询出的个数来进行limit
使用了MySQL里面的两个知识:
1)预编译,语法如下
# 定义预处理语句 PREPARE stmt_name FROM preparable_stmt; # 执行预处理语句 EXECUTE stmt_name [USING @var_name [, @var_name] ...]; # 删除(释放)定义 {DEALLOCATE | DROP} PREPARE stmt_name;
2)变量
set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:
SET @var_name = expr [, @var_name = expr] ...
也可使用select语句来定义:
SELECT @var_name := expr [, @var_name = expr] ...
用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。
它可以是任何随机的,复合的标量表达式,只要其中没有列指定
处理:
--定义查询集群信息的预编译 PREPARE s1 FROM 'select distinct(clusterName), Version, ts from m_fds_version order by ts desc limit ?'; --定义集群个数变量 select @limit_num:=count(distinct(clusterName)) from m_fds_version; --执行预编译语句 EXECUTE s1 USING @limit_num; --删除预编译 DROP PREPARE s1;
posted on 2021-01-09 23:22 gentleman_hai 阅读(223) 评论(0) 编辑 收藏 举报