省市县乡村五级数据联动的效率问题

作者: 乘风御上者 分类: MySQL 发布时间: 2020-03-31 23:39

在项目中遇到省市县乡村五级数据联动选择的需求,开始时在网上找了N多的mysql数据文件,大多都不够新。因为每年的地区尤其是精确到村级(社区)的变化实在是太大,所以就想去 国家规划局 用爬虫爬取一份,不过因为中间被公司大佬打断,至今也没写个爬虫。

公司大佬有一套2018年精确到村级的SQL,能应对项目需求也就懒得再去爬取。(听说爬取国家规划局的数据要小心,可能会涉及到国家机密问题,不知真假)

真正使用数据时,发现数据库数据超过60万条,查库的效率问题非常值得注意。

开始我想到的优化方案无非就是将乡级和村级数据分表存储,但是在使用的时候又涉及到连表操作,感觉有点小题大作。

百万数据而且是固定数据,应该是有更好的解决方法。敢于面对自己的经验不足,向大佬低头。大佬送我一个词:水平分表。

原来如此,通过结合行政区划代码的特性,栗子:110101001009 中前两位代表省级,前四位代表市级,前六位代表区级,加上后面三位代表乡镇(街道),再加上最后三位代表村级(社区)。

按照省级代码将表水平分割成每个省一个数据表,表名统一使用 【area_省级代码】类似有规律的名称,方便数据查询。

如此一分,数据查询速度翻倍提升,尤其是在联动查询时一点不影响操作。(第一步确定省份,也就确定了查询的表)。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表回复