查看: 3701|回复: 10

请问数据呈现这样分布的列,将之作为查询条件,有什么好的优化思路

[复制链接]
论坛徽章:
12
生肖徽章2007版:鸡
日期:2009-04-07 10:25:03红旗
日期:2013-12-30 23:09:11茶鸡蛋
日期:2012-02-13 22:39:292012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-02-18 11:42:47生肖徽章2007版:兔
日期:2011-01-20 12:58:49ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25数据库板块每日发贴之星
日期:2009-10-11 01:01:03祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2009-09-12 17:11:11
发表于 2010-9-29 14:37 | 显示全部楼层 |阅读模式
a            COUNT(*)
------------ ----------
1              10633166
3               1457136
0                571796
-1               121665
2                  7740
4                  1166

请问数据呈现这样分布的列,将之作为查询条件,有什么好的优化思路
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2010-9-29 14:44 | 显示全部楼层


字段a的选者性很差啊, 如果该表不是经常操作DML语句, 我觉得可以考虑建个bitmap index.

使用道具 举报

回复
论坛徽章:
17
ITPUB元老
日期:2005-02-28 12:57:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
发表于 2010-9-29 15:00 | 显示全部楼层
估计意义不大,建索引只有当a值为0、-1、2、4的时候使用索引比较有效,其他情况下没什么意义
而且看你的数据分布,大多情况下a应该都为1,所以相信即使建了索引,使用率也不会太高。
从其他列想办法吧,总不会只使用a=1这样的条件来过滤吧。

使用道具 举报

回复
论坛徽章:
76
山治
日期:2019-03-27 22:55:03秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16秀才
日期:2015-11-30 09:13:06处女座
日期:2015-11-27 12:27:01
发表于 2010-9-29 15:14 | 显示全部楼层
做分区吧,呵呵。

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-9-29 15:26 | 显示全部楼层
什么版本?11G的ACS特性可以避免错误的bind_peeking,这样,倒是可以在这个列上索引,不过数据量大的a依然无法使用到索引

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
发表于 2010-10-3 13:33 | 显示全部楼层
用空值代替1,用其它无意义的数字代替空值。
因为键值NULL的记录在索引中是没有索引项的,所以索引中只存在值为-1,0,2,3,4索引项。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-10-3 16:22 | 显示全部楼层
用直方图

使用道具 举报

回复
论坛徽章:
33
红孩儿
日期:2006-04-13 07:34:50ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54玉石琵琶
日期:2012-02-21 15:04:38奥运会纪念徽章:射击
日期:2012-08-10 11:01:09ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07
发表于 2010-10-3 18:46 | 显示全部楼层
原帖由 gszoracle 于 2010-10-3 13:33 发表
用空值代替1,用其它无意义的数字代替空值。
因为键值NULL的记录在索引中是没有索引项的,所以索引中只存在值为-1,0,2,3,4索引项。


觉得此方案可行!

使用道具 举报

回复
论坛徽章:
401
紫蛋头
日期: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
发表于 2010-10-3 21:34 | 显示全部楼层
nice

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:34:01ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
发表于 2010-10-3 21:54 | 显示全部楼层
原帖由 gszoracle 于 2010-10-3 13:33 发表
用空值代替1,用其它无意义的数字代替空值。
因为键值NULL的记录在索引中是没有索引项的,所以索引中只存在值为-1,0,2,3,4索引项。


学习!

使用道具 举报

回复

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

本版积分规则 发表回复

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