数据库有很多表,表和表之间使用主键进行关联,上层系统要求能够查询返回由不同表的任意字段组合成的查询结果。表大概如下:总表 ZT 字段 ID,FZ1,FZ2, FZ3 .. FZN。 其中ID为主键表T1 字段 ID(ZT的ID), T1ID,F11,F12,F13....F1N
表T2 字段 ID(T1的T1ID),T2ID,F21,F22,F23....F2N
表T3 字段 ID(T2的T2ID),T3ID,F31,F32,F33....F3N
表T4 字段 ID(ZT的ID), T4ID,F41,F42,F43....F4N
表T5 字段 ID(T4的T4ID),T5ID,F51,F52,F53....F5N
。表的树形结构如下:
ZT
T4 T1
T5 T2
T3 父表与子表有一对一,一对多的关系。现在就想给定ZT的某个条件,然后任意选择T1到T5的字段进行组合,如查询结果为
FZ1,F11,F21,F31,F41,F51,F53之前是采用手工将要的查询结果使用视图的方式先创建好视图。单由于有些表过大,有上百万条记录,而且经常是好几个表进行关联查询,查询时间特长,满足不了使用需求。我想知道,能否还有其他方法能够满足任意字段组合,并且速度还要快,如果SQL实现不了,需要前端程序再处理也可以。谢!
表T2 字段 ID(T1的T1ID),T2ID,F21,F22,F23....F2N
表T3 字段 ID(T2的T2ID),T3ID,F31,F32,F33....F3N
表T4 字段 ID(ZT的ID), T4ID,F41,F42,F43....F4N
表T5 字段 ID(T4的T4ID),T5ID,F51,F52,F53....F5N
。表的树形结构如下:
ZT
T4 T1
T5 T2
T3 父表与子表有一对一,一对多的关系。现在就想给定ZT的某个条件,然后任意选择T1到T5的字段进行组合,如查询结果为
FZ1,F11,F21,F31,F41,F51,F53之前是采用手工将要的查询结果使用视图的方式先创建好视图。单由于有些表过大,有上百万条记录,而且经常是好几个表进行关联查询,查询时间特长,满足不了使用需求。我想知道,能否还有其他方法能够满足任意字段组合,并且速度还要快,如果SQL实现不了,需要前端程序再处理也可以。谢!
ZT
T4 T1
T5 T2
T3
重新调整一下。
右边是 ZT,T1,T2,T3
1:优化视图的SQL语句
2:用物化视图
3:定时执行
与你的sql语句有关系
具体看一下执行计划了。