首页 新闻 会员 周边 捐助

sql server 百万数据查询 优化

0
悬赏园豆:15 [已解决问题] 解决于 2018-12-07 13:45

 

上图的配置环境 数据库的表里面有近300w的数据,这sql语句还有优化的空间么
表自增量ID聚集索引 已经有了

快乐起航的主页 快乐起航 | 初学一级 | 园豆:61
提问于:2018-12-06 15:05
< >
分享
最佳答案
0

bianhao 字段加上索引并包含 SELECT 中的 3 个字段(INCLUDE索引),将“聚集索引扫描”变为“索引查找”

收获园豆:15
dudu | 高人七级 |园豆:29570 | 2018-12-06 16:39

你好!大神,能否说详细点

1、目前这3个字段可能存在完全重复的

2、聚集索引 默认创建在表的自增量ID里面了吧,并且聚集索引好像只能有一个,你的意思是要删除原先的索引?

3、“聚集索引扫描”变为“索引查找” 这个具体怎么实现

快乐起航 | 园豆:61 (初学一级) | 2018-12-07 08:59

@快乐起航: 建议创建包含列索引试试,参考 SQL Server 索引和表体系结构(包含列索引)

dudu | 园豆:29570 (高人七级) | 2018-12-07 09:42
其他回答(5)
0

bianhao字段上面加上索引,为什么要加上排序呢

KingMi | 园豆:1344 (小虾三级) | 2018-12-06 15:20

不加好像也一样,添加非聚集索引么?

支持(0) 反对(0) 快乐起航 | 园豆:61 (初学一级) | 2018-12-06 15:31

字符串 不支持加索引

支持(0) 反对(0) 快乐起航 | 园豆:61 (初学一级) | 2018-12-06 15:57
0

300w数据应该是在100ms左右查完吧.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-12-06 15:40

上面的一个In条件(10条左右的记录) 要5s左右

支持(0) 反对(0) 快乐起航 | 园豆:61 (初学一级) | 2018-12-06 15:58

如上图

支持(0) 反对(0) 快乐起航 | 园豆:61 (初学一级) | 2018-12-06 16:01
0

desc有索引吗

保镖 | 园豆:759 (小虾三级) | 2018-12-07 13:31

支持(0) 反对(0) 快乐起航 | 园豆:61 (初学一级) | 2018-12-07 13:45

@快乐起航: 如果不是必须在sql排序的话,可以考虑在应用中排序。

支持(0) 反对(0) 保镖 | 园豆:759 (小虾三级) | 2018-12-07 13:52
0

可以试试水平分区。具体文章,我博客园瘦了下。可以参考这个:https://www.cnblogs.com/4kapple/archive/2013/03/29/2989183.html

keepnode | 园豆:162 (初学一级) | 2018-12-08 17:44
0

下面几种方法可以试试:
1、如果这个表的字段很多,那可以把select中的三个字段和where后的字段再加上排序的字段,总共5个字段组成一个组合索引。
2、直接把where字段加个非聚集索引。
3、把where后的字段和聚集索引的字段组成一个组合索引
因为你现在用的是全表的聚集索引扫描,的以性能是非常不好的。

GordonLiu | 园豆:202 (菜鸟二级) | 2019-01-30 10:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册