我有如下几个表:
t1,t2,t3...t62,所有表的表结构完全一样,只是数据不同,每个表平均有100万条数据.
现在相对这几个表进行联合查询:使用下面的SQL语句
(select * from t1 where s_id=0)
union
(select * from t2 where s_id=0)
union 
(select * from t3 where s_id=0)
uinon
.....
union
(select * from t62 where s_id=0)
这样的SQL语句的查询效率与使用将上面的SQL语句使用存储过程进行查询,哪一个效率高?

解决方案 »

  1.   

    既然SQL语句能解决,为什么要用SP?如果只要得到结果,SQL语句就行了
    在s_id上建立索引没有?
      

  2.   

    效率个人觉得差不多,存储过程还需要在里面申明变量,赋值什么的;还不如直接用sql来的干脆,要是楼主的表都是myisam的话,用merge存储引起把他们全部都放一起(只为查询).我觉得更好点;
      

  3.   

    mr_mablevi:
    我的表都是myisam引擎的.
      

  4.   

    ..楼主的表可真多啊,62个你可以这样:
    create table tt(.....)engine = MERGE union=((id int,name varchar(10))engine = MERGE union=(m1,m2)) #只做查询用
    再在s_id上建立索引,这样你就可以在里面用查询了,select * from tt where s_id=0
      

  5.   

    存储过程一次编译,多次运行,比普通的SQL的多次执行少了编译的时间,复杂的SQL用SP包裹起来更适合管理和维护。楼主分这么多表的出发点是什么??可以用表分区或者合并表来做,每表100万,总容量6200万,分区和索引合适,单表也不慢。
      

  6.   


    可以说几乎一样,甚至某些情况下 SQL语句反而会更快些。 但差距微乎其微。
      

  7.   

    楼主的sql和其存储过程的效率几乎是一样的。