sql加索引和删除索引,提高效率等
2015-12-05 16:43
232 查看
数据库:mssql2008
测试数据量:150万条
添加索引:CREATE INDEX 索引名称 ON 表名(列) WITH(ONLINE=ON)
删除索引:drop index 索引名称 on 表名
查寻索引: select * from sys.indexes where name='索引名称';
公司 里边做了一个项目,起实并没有太过于在意,按照正常的sql写的,但当数据量大之后,问题来了。
最初的时候,用的是阿里云的轻云服务器,当数据到100多万条的时候,速度也还是可以的,但后来随意数据量的增加,轻云服务器只有1g的空间,是不能满意的,后来没有办法更换到阿里云的rds,rds啊,价格好贵的,但效果没有想想的那么好,感觉还不如阿里云自带的,速度那叫慢啊,好神奇的慢,咨询售后,为什么自带数据库比RDS还要快,后来的答案是具体问题具体分析。。,我了个去,不过RDS也有一个好处,就是可以查看那些sql运行的慢。。经过分析,随着数据量的增加,加上索引是比较好的,后来没有办法,加上索引,加上索引后测试SQL
语句确实快了好些倍,如图 :
1.没有加过引之间需要的时间:
![](http://img.blog.csdn.net/20151205163250064?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.加过引之间需要的时间:
![](http://img.blog.csdn.net/20151205163430430?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
大家可以做一下对比,这二个图片所用的时间上差别还是蛮大的,效率是不言而明的,但在这里我需要说明的是我只在record_cpmid这个键上加了索引的,联合查询的其它列,并没有加,有网上查了一些文档,说是加过索引之后,添加数据会比较慢,后来,我测试了一下,同时添加1000条的情况下,好象没什么区别,可能是我只添加了一个索引的原因,如果过多的添加,是很可能造成影响数据的添加的。
我想问一下,大家对索引的使用是怎么看的,比如:
1.在添加少量索引的情况下是否影响数据的添加。
2.索引的维护这一块,大家都是怎么理解的。
如果大家对索引这一块,不太明白,可以建立索引后,在查询分析里边试下,看看是不是运行时间有变化
测试数据量:150万条
添加索引:CREATE INDEX 索引名称 ON 表名(列) WITH(ONLINE=ON)
删除索引:drop index 索引名称 on 表名
查寻索引: select * from sys.indexes where name='索引名称';
公司 里边做了一个项目,起实并没有太过于在意,按照正常的sql写的,但当数据量大之后,问题来了。
最初的时候,用的是阿里云的轻云服务器,当数据到100多万条的时候,速度也还是可以的,但后来随意数据量的增加,轻云服务器只有1g的空间,是不能满意的,后来没有办法更换到阿里云的rds,rds啊,价格好贵的,但效果没有想想的那么好,感觉还不如阿里云自带的,速度那叫慢啊,好神奇的慢,咨询售后,为什么自带数据库比RDS还要快,后来的答案是具体问题具体分析。。,我了个去,不过RDS也有一个好处,就是可以查看那些sql运行的慢。。经过分析,随着数据量的增加,加上索引是比较好的,后来没有办法,加上索引,加上索引后测试SQL
语句确实快了好些倍,如图 :
1.没有加过引之间需要的时间:
2.加过引之间需要的时间:
大家可以做一下对比,这二个图片所用的时间上差别还是蛮大的,效率是不言而明的,但在这里我需要说明的是我只在record_cpmid这个键上加了索引的,联合查询的其它列,并没有加,有网上查了一些文档,说是加过索引之后,添加数据会比较慢,后来,我测试了一下,同时添加1000条的情况下,好象没什么区别,可能是我只添加了一个索引的原因,如果过多的添加,是很可能造成影响数据的添加的。
我想问一下,大家对索引的使用是怎么看的,比如:
1.在添加少量索引的情况下是否影响数据的添加。
2.索引的维护这一块,大家都是怎么理解的。
如果大家对索引这一块,不太明白,可以建立索引后,在查询分析里边试下,看看是不是运行时间有变化
相关文章推荐
- DB Initialization(数据库初始化)[EF Code-First系列]
- 编写实现连接oracle数据库并返回Connection对象的Java工具类
- C语言与OCI一起操作oracle
- 数据库零散知识点
- iOS中的数据库 sqlite与coreData 的一些特点
- 数据库,求属性集闭包和函数依赖集闭包的算法实现
- 第三章 管理数据库表
- 第二章 使用SQLite数据库
- Centos 安装 redis
- memcached与redis比较
- RedHat7上安装MariaDB
- SQLSERVER 中的事务嵌套
- Mysql创建、删除用户
- mongoDB 3.0 安全权限访问控制
- C# MySqlHelper
- mongodb
- Mysql 记录
- SQL SERVER中强制类型转换cast和convert的区别
- MSSQL批量写入数据方案
- 数据库操作记录(2)日期求差DATEDIFF和格式转换CONVERT(CHAR(10),DATE ,21) /datename(year,lr.StartTime)