递归查询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系统的学习经验首篇