mysql分表后的查询方案

例如,现在有一张表city,按照城市编码进行分表city_*,那么我在查询时候一般要先获取要查询的分表编码,然后根据city_*进行查询,能不能直接根据city查询,在配置之类的解析具体使用哪张分表的方案呢,数据库使用mysql存储引擎使用innodb,请教各位大神,
补充一下问题:之前有点没说清楚,是想在程序里进行查询一些操作时直接调用city表想用中间间或是配置自动解析对应的city_*,最终执行语句是city_*

7个回答

你的意思时你将city分为了多张表,但是你得程序还是访问city表,通过一系列处理,希望执行 select * from city 会自己取实现调用 select * from city_* ?

你不觉得这样设计有点反人类吗? 这样分表有什么意义呢?不过还时有办法实现,使用存储过程吧!

建议还是使用分表规则在程序里面处理访问哪一张表,这个虚拟规则表可以放在内存中,减少表单查询。

分表有规则就可以了,比如id100w一个表,然后读取的时候按照规则得到表名,就是事先规定好的。

先建立一个路由规则表,然后先查询路由规则然后查询表

mysql 5.1以上的版本可以在存储过程中使用prepare语句,把表名作为变量动态生成需要的sql然后执行

可以使用mysql的分区

分表是有规则的,例如按取模为3的分表,根据具体的查询条件,查询具体的表

那就加一个中间表包含两个字段:tablename,idscope,前提是你分表的名字要有规则,比如说表city_1对应的cityid范围是在1到1000,
那么这个中间表对应的值就是:tablename=city_1,idscope=1-1000。
然后查询的时候,可以用cityid between SUBSTRING_INDEX(idscope,'-',1) and SUBSTRING_INDEX(idscope,'-',-1),来判断取哪个tablename

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐