mysql数据查询--多对多关系查询
以前关于多对多关联关系建表一直采用三张表的模式,但是今天了解到一种新的关于数据表的设计(多对多的关系),将关联关系存到其中的一张表的某个字段中使用逗号分隔,然后进行查询。引发两种表设计讨论的前提:如果将来表足够大以至于关联关系表需要分表时,该何去何从......
一 多对多的数据表如何设计
1 三张表设
2 两张表设计
二 对比执行耗时
--测试数据:test_A约8w数据, test_B约1w数据 , test_AB约40w数据
目标:查询B表某个值对应A表中所有的名字
对比:查询性能上存在近百倍的差距
目标:去掉B表某个值对应A表中所有的关联
对比一:修改性能上存在近30倍的差距
三 结论
上述两个对比测试发现,多对多的关联关系设计表时,采取关联表似乎更适合平时的日常业务。但是确实存在一个问题, 业务不断发展,数据表的数据多到需要分表时,如何近可能小的影响业务,以最小开发量进行重构改版。