DB2查询多张表中特定的某个内容
有一数据库有9万多张表
我想查询这表中的关键字段NAME为小王的所有记录
这个SQL语句该如何写呢?
怎样才能降低查询的时候不影响整体运行速度呢?
select * from table1 where name= '小王'union allselect * from table2 where name= '小王'union allselect * from table3 where name= '小王'union all.... union allselect * from table10000 where name= '小王'
要用SP,取得所有表名,根据表名取得字段名,一个一个循环判断
要从那么多表里去取数据,我想性能牺牲是免不了的。我觉得讨论怎么省事还可以。
我有一个思路,我没实验过,但我觉得是可行的。毕业论文
先从SYSIBM.SYSTABLES中选出你要查询的表,然后一个一个循环,组合字符串,即叠加(SELECT NAME FROM 表明 UNION ALL ),最后用隐式查询然后返回结果集!
当然,也可以循环tables做单个select,呵呵。也是隐式的。。。
访问系统表,得到所有表名。然后循环处理每条记录(系统表中的每个记录也就是一个表)
然后对每个表名,在程序中生成相应的 select * from " + rs.fields("tableName") 根据返回的结果判断是否包含 小王
1.先从SYSIBM.SYSTABLES中选出你要查询的表
List systabList=session.createQuery(SYSIBM.SYSTABLES)
2.根据查询的结果拼出SQL,然后把些SQL存在一张表中MY_QUERY