楼主: 〇〇

什么数据库能5000万行的group by查询1秒内返回

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
11#
 楼主| 发表于 2014-6-5 21:01 | 只看该作者
sql db
INGRES TERMINAL MONITOR Copyright 2012 Ingres Corporation
Vectorwise Linux Version VW 2.5.2 (a64.lnx/175)NPTL login
Thu Jun  5 21:57:24 2014
Enter \g to execute commands, "help help\g" for help, \q to quit

continue
* create table t as select 1 a union select 2;
* \g
Executing . . .

(2 rows)
continue
* create table t1w as
* select rn from(
* select row_number()over(order by a.a) rn from
* (select t.a from t,t t1,t t2,t t3,t t4,t t5,t t6,t t7,t t8,t t9)a,
* (select t.a from t,t t1,t t2,t t3)b
* )c where rn<=10000;
* \g
Executing . . .

(10000 rows)
continue
* create table t5k as select rn from t1w where rn<=5000;
* \g
Executing . . .

(5000 rows)
continue
* with a as(select (s.rn-1)*10000+t.rn a from t1w t,t5k s)
* select substr(a,-1,1)x,sum(a)s from a
* group by substr(a,-1,1)
* order by 1;
* \rt \g
Executing . . .


+----------------------+----------------------+
|x                     |s                     |
+----------------------+----------------------+
|0                     |       125000025000000|
|1                     |       124999980000000|
|2                     |       124999985000000|
|3                     |       124999990000000|
|4                     |       124999995000000|
|5                     |       125000000000000|
|6                     |       125000005000000|
|7                     |       125000010000000|
|8                     |       125000015000000|
|9                     |       125000020000000|
+----------------------+----------------------+
(10 rows in 1.534120 secs)
continue
*

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
12#
 楼主| 发表于 2014-6-5 21:09 | 只看该作者
lyzhanhun 发表于 2014-6-5 18:33
本机执行 1分钟, 机器卡了点
hagr占用时间3秒左右
(select (s-1)*1e4+t a from t,s),这里1e4改成10000会 ...

用13楼脚本呢

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
13#
发表于 2014-6-5 21:11 | 只看该作者
〇〇 发表于 2014-6-5 21:01
sql db
INGRES TERMINAL MONITOR Copyright 2012 Ingres Corporation
Vectorwise Linux Version VW 2.5.2 ...

这个比较牛逼

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
14#
发表于 2014-6-5 21:12 | 只看该作者
lyzhanhun 发表于 2014-6-5 20:54
先怀疑没走批量操作导致慢 调试
断点 bsub_av_int  bmul_av_int badd_aa_int
只有busb_av_int进了后来 ...

投影的操作符耗了14s,还有什么办法么?

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
15#
 楼主| 发表于 2014-6-5 21:13 | 只看该作者
lyzhanhun 发表于 2014-6-5 20:54
先怀疑没走批量操作导致慢 调试
断点 bsub_av_int  bmul_av_int badd_aa_int
只有busb_av_int进了后来 ...

oracle 1e4改10000还是50秒

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
16#
发表于 2014-6-5 21:13 | 只看该作者
本帖最后由 myth8860 于 2014-6-5 21:14 编辑
lyzhanhun 发表于 2014-6-5 20:54
先怀疑没走批量操作导致慢 调试
断点 bsub_av_int  bmul_av_int badd_aa_int
只有busb_av_int进了后来 ...

试了下,oracle改成int没啥效果,oracle一个number搞定所有。

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
17#
 楼主| 发表于 2014-6-5 21:13 | 只看该作者
〇〇 发表于 2014-6-5 21:13
oracle 1e4改10000还是50秒

SQL> with t as(select level t from dual connect by level<=1e4)
  2   ,s as(select level s from dual connect by level<=5e3)
  3   ,a as(select (s-1)*10000+t a from t,s)
  4   select substr(a,-1,1)x,sum(a)s from a
  5   group by substr(a,-1,1)
  6   order by 1;

X                S
-- ---------------
0  125000025000000
1  124999980000000
2  124999985000000
3  124999990000000
4  124999995000000
5  125000000000000
6  125000005000000
7  125000010000000
8  125000015000000
9  125000020000000
已用时间:  00: 00: 51.47

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
18#
发表于 2014-6-5 21:18 | 只看该作者
Vectorwise 确实牛逼,我们测试部的老大今天发微博说似乎找到了和Vectorwise 差距的地方,后面有望赶上。

使用道具 举报

回复
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
19#
发表于 2014-6-5 23:19 | 只看该作者
lyzhanhun 发表于 2014-6-5 18:33
本机执行 1分钟, 机器卡了点
hagr占用时间3秒左右
(select (s-1)*1e4+t a from t,s),这里1e4改成10000会 ...

你把e改了。oracle也会很快!

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
20#
 楼主| 发表于 2014-6-6 05:26 来自手机 | 只看该作者
Naldonado 发表于 2014-6-5 23:19
你把e改了。oracle也会很快!

有截屏吗

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表