- 论坛徽章:
- 0
|
企业有多项福利,比如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' |
|