查询9万多张表中特定的某个内容

luoxin_0077 2010-11-24 12:59:23
加精
有一数据库有9万多张表
我想查询这表中的关键字段NAME为小王的所有记录


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

...全文
5206 223 打赏 收藏 转发到动态 举报
写回复
用AI写文章
223 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyanru0810 2013-05-06
  • 打赏
  • 举报
回复
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= '小王'
因茹而生 2013-02-18
  • 打赏
  • 举报
回复
存储过程 一些SQL的集合,执行速度快,执行后会存储在数据库中,方便以后调用 索引 加快查询速度,不过,但索引的创建有一定的限速,超过了就会减慢降低效率 还是找不出很好的方法啊
kick5578 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 91 楼 love_hackpro 的回复:]

还有一种方法用 lucene
[/Quote]
+1
luoxin_0077 2010-12-08
  • 打赏
  • 举报
回复
结贴了,这个确实有这么多表,但我就是不敢去运行查询的SQL语句哈
通过这个到是学到很多
「已注销」 2010-12-05
  • 打赏
  • 举报
回复
真是有高手啊
luoxin_0077 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 205 楼 zhuhichn 的回复:]
其实你可以过滤一下表啊,你们肯定不是所有表都有这个NAME字段吧,所有拟可以根据 SYSCAT.COLUMNS表中的COLNAME去过滤一下啊,其中加上一些限制条件如TABSCHEMA模式等条件,然后


SQL code
select distinct TABNAME from syscat.COLUMNS
where COLNAME='NAM……
[/Quote]

这方法可取哈,就是先过滤一下
kakajay008 2010-12-02
  • 打赏
  • 举报
回复
mark留名,强帖啊
gh641199079 2010-12-02
  • 打赏
  • 举报
回复
不错的东西,谢谢分享
kentyliu 2010-12-02
  • 打赏
  • 举报
回复
等待高人出现...
dicklee1214 2010-12-02
  • 打赏
  • 举报
回复
在数据库端实现:
1、为了代码的方便——用视图(创建时候麻烦点,但一次搞定),不过如果表会增加或者表中数据经常变动,从效率考虑不是个好方案
2、数据库脚本——“一楼”的union all方案,脚本代码就比较长了!
在程序里实现:
程序循环遍历了
shuxiucheng1977 2010-12-01
  • 打赏
  • 举报
回复
天啊,太不容易了
xiongwei56 2010-12-01
  • 打赏
  • 举报
回复
我觉得把每个表出select一次,循环处理
mrlyj 2010-12-01
  • 打赏
  • 举报
回复
不好搞。
huoyanjiban 2010-12-01
  • 打赏
  • 举报
回复
用存储过程实现,速度应该比较快~
lrwh1986 2010-12-01
  • 打赏
  • 举报
回复
~
~~~~~~~~~~
glacier1123 2010-12-01
  • 打赏
  • 举报
回复
我很好奇什么样的应用要这么多张表啊
hnynes 2010-12-01
  • 打赏
  • 举报
回复
你这个都没有什么关联性可言,怎么会想到用union呢。
关键是这么多的表,我在想,你们那啥数据库啊,展开一个表列表,估计得1小时吧。

唉,感觉没有什么比较好的办法,应该用存储过程就行了。
anson2003 2010-12-01
  • 打赏
  • 举报
回复
不是到最后才处理,应该在设计的时候就处理掉,比如把9000多张表要查的字段合成一张或几张表,在做9000多张表的插入,删除,更新的时候,同时也处理合成表。 然后你就可以查询你的合成表了。而不是直接查9000多张表。
潇洒王子 2010-12-01
  • 打赏
  • 举报
回复
不管什么方法,时间都是必须的,楼主具体要动手试试。
zhuhichn 2010-12-01
  • 打赏
  • 举报
回复
其实你可以过滤一下表啊,你们肯定不是所有表都有这个NAME字段吧,所有拟可以根据 SYSCAT.COLUMNS表中的COLNAME去过滤一下啊,其中加上一些限制条件如TABSCHEMA模式等条件,然后
select distinct TABNAME from syscat.COLUMNS 
where COLNAME='NAME' AND TABSCHEMA='SCHEMANAME'


这样肯定能烧掉一大半表吧。
加载更多回复(174)

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧