易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL的表和视图我如此设计会不会影响效率?

Create t_Table1(F_ID Int Primary Key, f_Name CHAR(32));

Create t_Table2(F_ID Int Primary Key, f_Name CHAR(32), f_T1ID Int);

Create t_Table3(F_ID Int, f_Type CHAR(1), f_TypeE CHAR(1), f_T2ID Int);

因为我要统计t_Table3, 按照不同的t_Table3.f_Type统计f_TypeE,本来应该这样:

Select t1.f_Name, t2.f_Name, count(t3.f_TypeE), count(t31.f_TypeE), count(t32.f_TypeE) from t_Table1 t1, t_Table2 t2 Left Join(t_Table3 t3, t_Table3 t31, t_Table3 t32) On (t3.f_T2ID = t2.F_ID AND t31.f_T2ID = t2.F_ID And t32.f_T2ID = t2.f_ID) Where t3.f_TypeE = 'A' And t31.f_TypeE = 'B' And t32.f_TypeE = 'C' And t2.f_T1ID = t1.F_ID Group By t1.f_Name, t2.f_Name;

我觉得这样可能效率不行,所以在数据库中添加了一个视图:
Create View v_CountSome As Select F_T2ID, f_TypeE, Count(f_TypeE) As CountE from t_Table3 Group by f_ID, f_TypeE;
最后从数据库中读取的时候:

Select t1.f_Name, t2.f_Name, t3.CountE, t4.CountE, t5.CountE from t_Table1, t_Table2 left join (v_CountSome t3, v_CountSome t4, v_CountSome t5) on (t2.f_T2ID = t_Table2.f_ID And t3.f_T2ID = t_Table2.f_ID And t4.f_T2ID = t_Table2.f_ID) Where t1.f_ID = t2.f_T1ID And t3.f_TypeE = 'A' And t4.f_TypeE = 'B' And t5.f_TypeE = 'C';

请问哪种方式的效率更好?

谢谢
但是,另外一想,如果还需要加入其它条件的话
t_Table是根据其它的条件筛选出数据再统计,
而采用Select * from v_Coun


相关问答:

mysql如何实现高效的搜索?

一个行业网站,要实现的功能要求为:

一搜索表单可选搜索 产品/资讯/商家,搜索时希望先搜标题后全文,当前的数据量估计3万多,定位期望在百万级也可用。

数据类型为innodb,当前的方法是对关键词进行 ......

MySQL数据包过大

我用一个循环往数据库里面存文件,本来可以作为文件存放数据库里面只放文件的位置的,但是没有办法租的服务器网页空间大小有限制数据库没有限制。语句是这样的


public static final DataBase.MAXSIZE=102 ......

mysql语句优化问题 大家给优化个SQL语句

SELECT a.tguildname ,SUM(a.ct) +  if (SUM(b.ct) IS NULL ,0,SUM(b.ct)) from (
SELECT  tg.tguildname,c.cid, (
cf.fbb + cf.fgjbb + cf.fjybb + cf.fqb + cf.fgjqb + cf.fjyqb + cf.fqib + cf. ......

c语言如何连接MYSQL?

大家好:
我是搞C的, 现在想用C 连接MYSQL,但是怎么也连接不了,我的代码如下:
#include <stdio.h>
#include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h"
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号