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

一个查询的性能问题
需求:
有20张表,每张表都有一个学生姓名字段,在每个表中,每个学生姓名可能有多条数据。现在我要在一个网页上显示某个学生名字在这20张表中信息出现的次数。
如果我拿着姓名分别去查20张表,那么一个学生就需要执行20次数据库查询,如果每个页面显示50个学生信息,也就是说要执行1000次的查询。这样效率太低,所以请各位大神支支招,有没什么好的办法。

------解决方案--------------------
引用:
Quote: 引用:

你的设计就是不合理的。
 部分同意这种观点,因为没有具体需求也不能说就一定是不合理

这个方法你试一下 
SELECT TABTYPE,XM COUNT(1) FROM 
(
  (SELECT 'T1' TABTYPE,T1.XM XM FROM T1,S WHERE T1.XM=S.XM) UNION ALL
  (SELECT 'T2' TABTYPE,T2.XM XM FROM T2,S WHERE T2.XM=S.XM) UNION ALL
  (SELECT 'T3' TABTYPE,T3.XM XM FROM T3,S WHERE T3.XM=S.XM) UNION ALL
  ...
)
GROUP BY TABTYPE,XM

少个逗号 SELECT TABTYPE,XM, COUNT(1) FROM