mysql 命令in的长度_mysql In长度的问题?

本文探讨了无限分类表的设计问题,指出仅使用id和parent_id字段可能导致大量IN操作。通过引入level、number和left_number字段,可以避免使用IN,提高查询效率。介绍了如何利用数轴投影序号维护树形数据,使得搜索特定节点的子节点变得快速。这种方法在实际项目中,如传销系统人员结构树的实现中表现出色。
摘要由CSDN通过智能技术生成

不记得有代替in的语句,可能也是因为我不太关注sql导致水平较低哈。

这种问题通常是由于无限分类表本身的设计问题导致的,例如只有id, parent_id两个字段,所以只要in了,如果无限分类表包含 id, parent_id, level(树高), path这个字段的时候就可以避免使用in了。

我个人使用的一个无限分级表包括以下的字段

id 唯一索引

parent_id 父级的id

number 数轴投影序号

leve 树高

left_number 已当前节点为树根时,其下的最左端的子节点的数轴投影序号

一个简单的例子演变:

[id:1, level:1 number: 1, left_number:1]

插入一个子节点

[id:1, level:1 number: 2, left_number:1]

[id:2, level:2 number: 1, left_number:1]

于level2再插入一个子节点

[id:1, level:1 number: 3, left_number:1]

[id:2, level:2 number: 1, left_number:1] [id:2, level:2 number: 2, left_number:2]

这种树形的数据维护很麻烦,但是搜索要快的多,例如任意节点下的全部子节点就是left_number到number-1。用这个做过一个Chuan啊销系统的人员结构树,效果很不错。

核心思路就是把一颗树的分支转换为数轴上的点/线段,从而在数轴上得到完整的树的投影。

忘了一个top_id,表示节点对应的根节点,否则表里面有多颗树的话就出问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值