查看: 11650|回复: 32

关于千万级大表的查询优化

[复制链接]
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2009-04-07 11:17:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04宝马
日期:2014-02-10 11:54:34
发表于 2009-3-26 14:02 | 显示全部楼层 |阅读模式
hi各位,
请问下我有张表是几千万的主数据表,会关联若干张几万数据的表,请我如何做优化使得查询时得到最快的速度呢?(查询的时候会对大表的字段做聚合、乘除等计算操作)
论坛徽章:
15
生肖徽章2007版:羊
日期:2009-02-10 14:52:362013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-12-17 17:16:242011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-30 14:20:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:尼日利亚
日期:2010-07-15 14:53:432010年世界杯参赛球队:美国
日期:2010-04-29 22:55:002010新春纪念徽章
日期:2010-03-01 11:08:27生肖徽章2007版:龙
日期:2009-07-30 10:45:52
发表于 2009-3-26 14:14 | 显示全部楼层
分区然后用并行,最好来个实际的例子,看看能不能设计几个好的索引

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2009-04-07 11:17:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04宝马
日期:2014-02-10 11:54:34
 楼主| 发表于 2009-3-26 14:54 | 显示全部楼层
比如:   
A 表 8000W
B 表 几百
C 表 几千

SELECT
  C.YEAR_ID,
  SUM(A.MATCH_BALANCE_RMB),
  SUM(A.PURE_COMMIS_RMB),
  SUM(A.MATCH_BALANCE_RMB_ONLINE),
  SUM(A.MARKET_MATCH_BALANCE)
  SUM(A.MATCH_BALANCE_RMB)/SUM(A.MARKET_MATCH_BALANCE),
  SUM(A.MATCH_BALANCE_RMB_ONLINE)/SUM(A.MARKET_MATCH_BALANCE)
  SUM(A.MATCH_BALANCE_RMB)/MAX(B.SUB_COMPANY_COUNT),
  B.BRANCH_CODE,
  B.SUB_COMPANY_COUNT,
  C.QUARTER_ID,
  C.MONTH_ID,
  C.DATE_ID,
  B.BRANCH_TYPE
FROM
  A,
  C,
  B
WHERE
  ( A.DATE_ID=C.DATE_ID  )
  AND  ( A.BRANCH_ID=B.ID  )
  AND  
  (
   C.YEAR_ID  BETWEEN  2004  AND  2009
   AND
   B.SUB_COMPANY_CODE  =  '4300'
   AND
   B.BRANCH_TYPE  =  '4'
   AND
   B.STOCK_TYPE_CN  =  '啊啊啊'
  )
GROUP BY C.YEAR_ID

使用道具 举报

回复
论坛徽章:
15
生肖徽章2007版:羊
日期:2009-02-10 14:52:362013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-12-17 17:16:242011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-30 14:20:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:尼日利亚
日期:2010-07-15 14:53:432010年世界杯参赛球队:美国
日期:2010-04-29 22:55:002010新春纪念徽章
日期:2010-03-01 11:08:27生肖徽章2007版:龙
日期:2009-07-30 10:45:52
发表于 2009-3-26 15:11 | 显示全部楼层
如果这几张表字段都不多的话可以考虑用IOT,A主键包含date_id,branch_id B主键包含id C表按年分下区就好了

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2009-04-07 11:17:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04宝马
日期:2014-02-10 11:54:34
 楼主| 发表于 2009-3-26 15:24 | 显示全部楼层
谢谢,
IOT的话是不是要重新建表呢?
这个大表还要每天不断更新当月数据的,会不会有什么问题?

使用道具 举报

回复
论坛徽章:
15
生肖徽章2007版:羊
日期:2009-02-10 14:52:362013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-12-17 17:16:242011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-30 14:20:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:尼日利亚
日期:2010-07-15 14:53:432010年世界杯参赛球队:美国
日期:2010-04-29 22:55:002010新春纪念徽章
日期:2010-03-01 11:08:27生肖徽章2007版:龙
日期:2009-07-30 10:45:52
发表于 2009-3-26 15:34 | 显示全部楼层
如果有大量更新的话还是不要用IOT了,还是分区吧,按月

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2009-04-07 11:17:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04宝马
日期:2014-02-10 11:54:34
 楼主| 发表于 2009-3-26 15:43 | 显示全部楼层
恩,我前面在A表date_id,branch_id B表id 等几个地方设置了索引,反而查的更慢了,很奇怪呀。

使用道具 举报

回复
论坛徽章:
15
生肖徽章2007版:羊
日期:2009-02-10 14:52:362013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-12-17 17:16:242011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-30 14:20:16ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:尼日利亚
日期:2010-07-15 14:53:432010年世界杯参赛球队:美国
日期:2010-04-29 22:55:002010新春纪念徽章
日期:2010-03-01 11:08:27生肖徽章2007版:龙
日期:2009-07-30 10:45:52
发表于 2009-3-26 15:50 | 显示全部楼层
执行计划看一下,还有optimizer_mode什么值

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
4
2009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-05-24 01:01:012012新春纪念徽章
日期:2012-01-04 11:54:26ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19
发表于 2009-3-26 16:00 | 显示全部楼层
是不是没有走索引呢

使用道具 举报

回复
论坛徽章:
0
发表于 2009-3-26 16:11 | 显示全部楼层
主要是你查出来的数据量是多少来决定,并不是有了索引就快.没有用索引就慢,你检查一下执行计划!

使用道具 举报

回复

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

本版积分规则 发表回复

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