这种情况是否需要建索引?

0
select * from table where flag=1 and date>=‘2014-01-01’

因为表数据记录有一亿多条,想按时间范围分开查询,给日期建了聚集索引,那还有flag=1这种情况,还需要给flag这个字段取建个索引么?
已邀请:
0

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-12-21 回答

可以在Date,flag上的建立组合索引,把flag作为前导列即可。。给你上传一个我之前写的关于索引设计的文档,可以看看。
1.jpg
0

lxljw1314 2014-12-21 回答

感谢!可是文件好像download下来不对,打不开。。。

QQ截图20141221174505.jpg


另,我下午在测试,本地建了个表插入了200w的数据,带日期的,每个日期对应的count如上图,我按日期条件select,发现加不加索引,查询时间都几乎一样。。。比如下面这个,我加不加耗时都是28秒左右,为什么索引没起什么作用呢,而且还会比不加的时候略微慢那么一点点。。。
Select gid,fariqi,neibuyonghu,title from dbo.tgongwen
where fariqi >'2003-08-15 00:00:00'
0

xpivot - SSAS & Excel &Cube架构师、产品经理 课程地址:http://www.hellobi.com/course/34 2015-01-06 回答

要看这个日期字段内容的数据分布,比如说99%的数据都是>'2003-08-15 00:00:00',那么优化器会考虑直接全表扫描了,否则再利用索引的话,还得回表查询(rowid found)找到你要select出来的其它字段,效率反而不如全表扫描,但不能因此说索引是没用的
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-02-04 回答

如果日期字段重复率不高的话,聚集索引是绝对有用的。
你现在已经在 日期字段上建立了聚集索引,为了达到索引查找,你需要再在 Flag列上建立一个非聚集索引。
这样就可以达到 索引查找,你可以在 SSMS界面用 Ctrl+L打开执行计划看一看。
0

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-09-02 回答

日期不均匀吗?可以考虑表分区啊?
0

牟瑞 - 大数据 Hadoop 讲师 Hadoop入门课程地址:http://www.hellobi.com/course/39 有架构师,技术总监,CTO的职位请联系我! 2015-09-02 回答

可以再追加一个字段,类似的int_day,是int类型的。保留日期,比如205-09-02 01;03:00,追加的这个字段可以设置为20150902的INT类型。然后在这上面加索引,就更快了。。

要回复问题请先登录注册