递归查询mysql数据库设计
生活随笔
收集整理的这篇文章主要介绍了
递归查询mysql数据库设计
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
国标地图 省-市-区-县-镇-村全部数据为711892条数据,
如果要查询到全国省市区镇村的数据,数据库表结构设计不合理的情况下很有可能出现死查询的情况,
最开始的表结构如下
code | parent_code | name | fullname | level |
11 | 0 | 北京市 | bjs | 0 |
1101 | 11 | 市辖区 | sxq | 1 |
110101 | 1101 | 东城区 | dcq | 2 |
110102 | 1101 | 西城区 | xcq | 2 |
110105 | 1101 | 朝阳区 | zyq | 2 |
现在查询北京下面的市[区县]信息就需要通过parent_code来联系父类信息,在加入索引的情况下,也会造成很差的性能问题,查询全国省市区耗时在2.5s左右,
如果在全国70w+的数据情况下,这样的设计结构查询就会造成死查询,为了避免这种情况,我对表从新设计了一下如下
fullname | name | searche_key | level |
bjs | 北京市 | 11 | 0 |
sxq | 市辖区 | 11.1101 | 1 |
dcq | 东城区 | 11.1101.110101 | 2 |
xcq | 西城区 | 11.1101.110102 | 2 |
zyq | 朝阳区 | 11.1101.110105 | 2 |
这样设计的情况下,search_key承担了主键Key的作用,还承担了关联上下级关系的作用,level区别当前的递归级别,在给searche_key,name,level等列添加索引,
这样递归查询的性能将是极大的提升,内网查询的效率为1000次平均在3-4毫秒左右。
转载于:https://www.cnblogs.com/light-zhang/p/8358472.html
总结
以上是生活随笔为你收集整理的递归查询mysql数据库设计的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 12月21日云栖精选夜读:阿里云总裁胡晓
- 下一篇: linux系统的学习经验首篇