免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2140 | 回复: 0
打印 上一主题 下一主题

mysql表一对多设计问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-09 15:49 |只看该作者 |倒序浏览
企业有多项福利,比如1表示双休,2表示工作餐,3表示五险等等
这样如何设计表比较好?
有两种方式,一种是qiye表加个fuli字段,emu还是string,用1,2,3形式存入
还有一种方式,另加一个fuli表,一个企业id对应多项福利,比如企业id为1,则存入fuli表1,1  1,2  1,3三条记录。

现在我要搜索包含福利1双休的企业,如何搜索比较快速效率高?
第一种搜索方法:select * from qiye where fuli like '%1%'
第二种搜索方法select * from qiye,fuli where qiye.id=fuli.id and fuli.fuli=1

第一种方法简单,但是搜索用到全表扫描
第二种方法可以索引,当时联合查询扫描的行数也很大,比如1个企业对应9个福利选项。那就是9培的行数。如果再连接一个多表的话,扫描行数更大,几何级增加。比如还要连接一个区域表,这家企业分布在多个地区,也是一对多。变成select * from qiye,fuli,diqu where qiye.id=fuli.id and qiye.id=diqu.id and fuli.fuli=1 and diqu='diqu'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP