绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
HotDB的DNID特色语法
2022-05-09 15:03:52

NID是数据节点DATANODE_ID的缩写
在计算节点上可以使用DNID作为WHERE子句中的过滤条件,以及在SELECT语句中作为查询项;也可以在结果集中显示每行结果的DNID(数据节点)。

  • 在SELECT、UPDATE、DELETE子句中,使用DNID字段
    SELECT *FROM customer WHERE dnid=1;

执行该SELECT语句,计算节点将会返回分片表customer在数据节点ID为1上的数据。
DELETEFROM customer WHERE dnid=1 AND id=3;

执行该DELETE语句,计算节点将会删除分片表customer在数据节点ID为1,字段ID等于3的数据。
UPDATEcustomer SET id=4 WHERE dnid=1 AND name=‘a’;

执行该DELETE语句,计算节点将会修改分片表customer在数据节点ID为1,字段name等于’a’的数据。

  • 执行SELECT语句使用DNID作为查询项
    SELECT*,dnid FROM tab_name;

执行该SELECT语句,计算节点将会在结果集里显示所有结果的dnid值,且dnid必须放在*的后面,否则会出现语法错误。

  • 在结果集中显示DNID
    登录到计算节点以后,执行SET SHOW_DNID=1语句,计算节点将会在SELECT语句中返回每一行结果的DNID(数据节点ID)。
    mysql>set show_dnid=1;
    Query OK,0 rows affected (0.00 sec)
    mysql>select * from customer where id in (77,67,52,20);
    ±—±--------±-----------±-----------±-----------±-----±------------±-----+
    | id |name | telephone | provinceid | province | city | address | DNID|
    ±—±--------±-----------±-----------±-----------±-----±------------±-----+
    | 52 | 马深圳 | 13912340052 | 7 | Guangdong | 深圳 | 某某街某某号 | 13 |
    | 77 | 郝上海 | 13912340077 | 25 | Shanghai | 上海 | 某某街某某号 | 14|
    | 20 | 许重庆 | 13912340020 | 4 | Chongqing | 重庆 | 某某街某某号 | 12 |
    | 67 | 岑南昌 | 13912340067 | 17 | Jiangxi | 南昌 | 某某街某某号 | 15|
    ±—±--------±-----------±-----------±-----------±-----±------------±-----+
    4 rows inset (0.00 sec)

图中结果分别显示了数据节点ID为12,13,14,15的数据行。
全局表SET SHOW_DNID=1,语句,计算节点将会在SELECT语句中返回每一行结果的DNID(GLOBAL)。
mysql>set show_dnid=1;
Query OK,0 rows affected (0.00 sec)
mysql>select * from tb_quan;
±-----±----±------±---------+
| id | a | b | DNID |
±-----±----±------±---------+
| 1 | 1 | 1.10 | GLOBAL |
| 2 | 2 | 1.20 | GLOBAL |
| 3 | 3 | 1.30 | GLOBAL |
±-----±----±------±---------+

SET SHOW_DNID=0,将取消在结果集中显示DNID列。
mysql>set show_dnid=0;
Query OK,0 rows affected (0.00 sec)
mysql>select * from customer where id in (77,67,52,20);
±—±--------±-----------±-----------±-----------±-----±------------+
| id |name | telephone | provinceid | province | city | address |
±—±--------±-----------±-----------±-----------±-----±------------+
| 52 | 马深圳 | 13912340052 | 7 | Guangdong | 深圳 | 某某街某某号 |
| 77 | 郝上海 | 13912340077 | 25 | Shanghai | 上海 | 某某街某某号 |
| 20 | 许重庆 | 13912340020 | 4 | Chongqing | 重庆 | 某某街某某号 |
| 67 | 岑南昌 | 13912340067 | 17 | Jiangxi | 南昌 | 某某街某某号 |
±—±--------±-----------±-----------±-----------±-----±------------+
4 rows inset (0.00 sec)

  • DNID的限制
    DNID字段为计算节点的保留字段,禁止在业务表中使用DNID字段,在SQL语句中使用DNID作为别名。
    DNID只适用于SELECT,UPDATE,DELETE的简单单表语句;并且,DNID只能作为WHERE子句的过滤条件,不能在ORDER BY,GROUP BY,HAVING中使用DNID字段;同样,不支持在JOIN语句、UNION/UNION ALL、子查询中使用DNID;禁止在函数,表达式中使用DNID字段。
来源 https://www.modb.pro/db/81747
分享好友

分享这个小栈给你的朋友们,一起进步吧。

HotDB
创建时间:2022-03-11 16:33:11
HotDB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • itt0918
    专家
戳我,来吐槽~