免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1821 | 回复: 7
打印 上一主题 下一主题

720张表,每张表70万记录,如何实现查询任务? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-08 12:58 |只看该作者 |倒序浏览
请教如何实现如下查询
公司数据库每个小时一张表 表名为data2005050809 ,data2005050810,依此类推。每张表的数据大概在70万-80万行。在其中的person字段上建立了聚簇索引。
现在是希望可以查询一个月的数据,将这一个月的数据分为白天和晚间两部分,然后找出在白天部分中存在而晚间部分中不存在的person。
在增加一些where条件以及去除重复的person值之后,我试着将一天的数据导入两张临时表,临时表只有一列,就是person。我对于临时表没有建索引。临时表中,一天的白天量为40万,一天的晚间量为20万。在进行查询的时候发现特别慢,我是这样写的, select person from 白天 where person not in (select person from 晚间)。这样要比较40万X80万次,实在是受不了。
希望请教几个问题,如果需要进行一个月30*24=720张表的查询,是否可以用动态sql语言实现,怎么写呢?如果对select的结果insert到另外的表中,一个字段的表建索引是否对查询有帮助?是在没有数据的时候建,还是插入数据以后再建?我曾经在插入一天数据后建索引,发现很慢,只不过40万条数据,居然1个小时都没有成功。最后,对于这样一个查询任务,可以有办法做得方便快捷一点么?

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2005-05-08 14:34 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

select person from 白天 where person not in (select person from 晚间)
给白天,晚间两个表建person的索引
一个字段的表建索引是否对查询有帮助,当然有帮助了
应该先查数据再建索引。
“只不过40万条数据,居然1个小时都没有成功”,不应该呀?

论坛徽章:
0
3 [报告]
发表于 2005-05-08 15:40 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

完全有可能,我讲我的几个观点:
1、没有对person建索引,select person from 晚间  所做的工作就是全表扫描。
2、select person from 白天。。。。所做的工作也是全表扫描
3、select person from 晚间 这个查询的中间结果是放在临时数据库中的,会产生较多的IO
光是上述3点,已经可以消耗很多时间
还有机器的性能,是否对内存做了合理性配置,磁盘的IO速度,等等

论坛徽章:
0
4 [报告]
发表于 2005-05-08 22:29 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

楼主的不是mssql 数据库么?怎么又变成sybase 了

论坛徽章:
0
5 [报告]
发表于 2005-05-09 12:28 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

1、将白天、晚上的数据写入临时表;
2、分别建上索引;
3、删除相同的;delete #"day" from #"night" where #"day".person=#"night".person;
4、剩下的就是你想要的

动态SQL动手搜一下多的很.

论坛徽章:
0
6 [报告]
发表于 2005-05-10 20:30 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

谢谢楼上诸位.

目前我这样做.
建立两张表,分别为day和night.person作为唯一聚簇索引.每一天的内容分day和night先insert 至中间表,然后再从中间表往day和night写.结果一个月下来,day大概有290万,night有170万记录.
然后delete day from night where day.person=night.person.
这些都比较快.
比较郁闷的是小子愚笨.搜寻半天google的结果,也不知道怎么把tablename用变量表示,所以只好每一个tablename都写一遍,几百条insert语句.
这里tablename可以拼么,前一段是data固定不变,后面就是数字,可以++
还望指教.

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
7 [报告]
发表于 2005-05-10 20:37 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

不明白你想干什么?写sql语句吗?复制一下不就行了吗?如果是写程序来处理,用动态sql不就行了

论坛徽章:
0
8 [报告]
发表于 2005-05-10 22:50 |只看该作者

720张表,每张表70万记录,如何实现查询任务?

感觉应该先拍一下序,有序数据和无序的肯定是不同的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP