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

请问一个Select语句效率的问题
表CallOut里面有几十万条数据,以后肯定要几百万或是几千万条。这个表里存了GroupID,SeatID,TypeID,AdviserID。这些ID都是别的表的ID。在显示表CallOut的数据的时候,不能显示ID,需要把ID对应的名字显示出来。这样就得5个表联合查询。请问有没有更好的办法?如果直接存ID对应的Name,那万一Name改名了,就对应不上了。请问大家平时怎么处理这些的。

------解决方案--------------------
改为子查询
------解决方案--------------------
肯定还是得用联合查询。
试试 根据条件先将CallOut的记录查询出来,然后将结果再与其他四个表关联。
------解决方案--------------------
还是用ID来关联,查找具体的name就要几张表联合查询。
------解决方案--------------------
这种类型的表大一点没关系的,由于是一对多,所以关联主表的时候其实数据量不会太大,我现在公司就有一个主表1000万,明细表(存放主表的ID及更详细的信息),有点类似楼主的情况。只要查询时把主表的数据量控制好,那么在关联明细的时候其实还是很快。当然如果业务上的确要那么大数据量,就要考虑改一下设计。

另外,可以考虑,按照查询条件,添加索引,甚至可以全表索引。