日期:2014-05-17  浏览次数:20498 次

多表联查还是单表多个字段
想建立一个数据库,里面存储一些设备的数据。数据项大概有150多个字段。应用场景是每次回插入这150多个数据,以及数据产生的时间(起始时间和结束时间)。目前根据数据项的功能,把经常一起查询的数据项放到一个表,大概分成10几个表,还有一个表存放时间。就是数据库中表结构如下
timetable,data1table,data2table.......
timetable中主键是int字段,其他数据表有一个外键字段timeid指向timetable的主键。

还有另外一种设计方式是把所有数据都存在一个表里面,那这个表就有150多个数据字段,再加上起始时间和结束时间字段。这种方式在查询的时候不需要多表联查,但是字段多也会影响查询效率。而第一种方法在一般查询的时候只对一个数据表和时间表进行联查,因为比较少会出现同时查询不同功能数据表的数据的情况。

请问这两种方法哪种查询效率会比较高。插入效率可以不用考虑,因为一般是1分钟1条数据,存储时间长度在3年以上。3年的数据差不多157万条

------解决方案--------------------
当表很宽的时候,你要衡量你平时的操作,如果每次操作都是少数或者少于半数的字段,那么拆表会比较高效。毕竟表关联在少于一亿(这个不是绝对值)的情况下,还是可以很高效。要切记为了业务而做系统,而不是要系统满足你的技术要求。
------解决方案--------------------
根据lz的描述,关键看150个字段超没超过一个页的存储范围,如果不超过,存在一个表中也可以的。3年157万,不算多。

查询的效率,完全取决于lz的索引使用,如果是全表字段都需要检出,那就是扫描的事儿了。
------解决方案--------------------
不考虑插入效率 ,那就用第二种方法吧 查询效率比第一高