关注Managing Hierarchical Data in MySQL, 我已经很好地实现了分层数据的使用,但是我已经要求我使用类似文件夹结构的路径添加功能来检索数据。
我甚至不确定如何开始这样做。
我已经尝试将路径扩展到各个段并进行循环以构建SQL查询以便以这种方式进行搜索,但速度非常慢。
我是否正确接近这个问题,请你给我任何建议或帮助链接吗?我搜索了几个星期,发现没有任何相关的内容,所以我猜这不常见。
答案 0 :(得分:1)
您链接的分层数据文档具有基于同一表上的多个联接的实现。如果这太慢了,那么有一个简单的解决方案不是那么“纯粹”,而是应该更快地运行:
向表中添加“路径”列,该列将根目录中的路径存储为varchar。确保在该列上放置索引。 例如:'ELECTRONICS> PORTABLE ELECTRONICS> MP3播放器> FLASH'
我用'>'作为类别名称之间的分隔符 - 确保您使用的任何内容都不会作为任何类别的一部分出现。
现在,为了使用绝对路径检索记录,您可以使用分隔符构建路径并查询完全匹配。您还可以使用LIKE查询并提供路径前缀,通过单个快速查询找到整个子树。
请注意,您还可以在路径后缀上查询LIKE查询的相对路径,甚至使用正则表达式做一些疯狂的事情。但这些都会很慢。但是,您可以添加更多列 - 例如反向路径(FLASH> MP3播放器> PORTABLE ELECTRONICS> ELECTRONICS)将允许快速查询路径后缀。