关于地区省市区在sql中查询的问题

285 阅读1分钟

在项目中有一个需求,是发布的信息需要携带省、市、区信息。目前我的做法是将省、市、区、县等id用逗号拼接存储到数据库的address字段中。在管理端查询是需要根据省、市、区检索这些区下的信息。例如搜索湖北需要查询出湖北以及湖北下所有的地区的信息。搜索武汉就需要查询武汉以及下面所有的地区信息。在数据量少时没有问题。现在数据量在不断增加。目前大概10w左右。查询起来速度很慢。

例如查询北京和湖北的sql大概为

select a.id,a.phone,a.address from t_project a
where 
a.phone = '13900000000' 
and (
    a.address like '110000%' or a.address like '420000%'
    )

这种形式。例如武汉表示为,420000,420100

根据地区查询的逻辑需要在多个地方用到,到时速度很慢。之前也尝试把武汉所有的地区全部查询出来用in查询但是效果也不是很理想。所以想请教下这种sql应该怎么写。或者说在设计的时候信息的地区信息应该怎么设计。