欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

查询9万多张表中特定的某个内容,该如何处理

更新时间: 2014-01-05 02:23:19 责任编辑: Author_N1

 

查询9万多张表中特定的某个内容
有一数据库有9万多张表
我想查询这表中的关键字段NAME为小王的所有记录


这个SQL语句该如何写呢?
怎样才能降低查询的时候不影响整体运行速度呢?


--参考方法--
9万多张表, 如果用
select * from table1 where name= '小王'
union all
select * from table2 where name= '小王'
union all
select * from table3 where name= '小王'
union all
....
union all
select * from table10000 where name= '小王'

速度上应该还可以,不过你的这个SQL语句的长度估计无法承受。


建议还是用程序一个表一个表进行搜索比较合理。
--参考方法--
用程序,每个表都循环过去
--参考方法--
估计要用SP,取得所有表名,根据表名取得字段名,一个一个循环判断
--参考方法--
要从那么多表里去取数据,我想性能牺牲是免不了的。我觉得讨论怎么省事还可以。

我有一个思路,我没实验过,但我觉得是可行的。
先从SYSIBM.SYSTABLES中选出你要查询的表,然后一个一个循环,组合字符串,即叠加(SELECT NAME FROM 表明 UNION ALL ),最后用隐式查询然后返回结果集!

当然,也可以循环tables做单个select,呵呵。也是隐式的。。。
--参考方法--
只能每个表出select一次,循环处理。
--参考方法--
先把表明查出来(从SYSIBM.SYSTABLES,可以放入一个表中)
然后循环这些表明,找出相关的记录
--参考方法--
用程序并不复杂啊?

访问系统表,得到所有表名。然后循环处理每条记录(系统表中的每个记录也就是一个表)
然后对每个表名,在程序中生成相应的 select * from " + rs.fields("tableName") 根据返回的结果判断是否包含 小王

楼主现在的问题是什么呢? 不了解怎么写程序?还是其它?
--参考方法--
访问系统表,得到所有表名。然后循环处理每条记录(系统表中的每个记录也就是一个表)
然后对每个表名,在程序中生成相应的 select * from " + rs.fields("tableName") 根据返回的结果判断是否包含 小王

--参考方法--
能有这样的需求 就不要考虑性能问题了。
遍历表名,遍历出此表的所有列名, 查询
select * from table where col1 =' 小王'
拼接SQL 吧
--参考方法--
传说中的全文索引是如何索引的?

另外,感觉你这个需求有问题,一般不会有这么变态的需求吧,

看看变通一下吧,

如果程序也不会写,SQL语句也不会,那就没办法了,

--参考方法--
我是菜鸟。我说一下我的理解:
为什么非要一次执行呢。
你9万张表可以化大为小,执行时以10张表(或者更多张表)为单位查询,将每次返回结果存储到一个表中;
这样效率肯定会快;
--参考方法--
select * from table1 where name= '小王'
union all
select * from table2 where name= '小王'
union all
select * from table3 where name= '小王'
union all
....
union all
select * from table10000 where name= '小王'


--参考方法--
9万张表确实够疯狂的
解决方案一般可从两个方向入手:
一 通过前台程序语言入手
   一般在这种情况想要大幅度提高查询性能很难;但可以通用使用AJAX和多线程结合处理;
二 通过优化SQL语句和数据库结构
   表结构一般是动不了的,只能寄希望于索引;
   再者优化SQL

select * from table1 where name= '小王'
union all
select * from table2 where name= '小王'
union all
select * from table3 where name= '小王'
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:23:19
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9202/
本文WWW.DOC100.NET DOC100.NET版权所有。