前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库索引对业务速度影响有多大?

数据库索引对业务速度影响有多大?

作者头像
希望的田野
发布2019-11-28 17:15:22
2.5K0
发布2019-11-28 17:15:22
举报
文章被收录于专栏:信息化漫谈信息化漫谈

某采用云数据库的网站用户反映业务访问速度很慢,查询一条数据库的数据时间很长,怀疑是云数据库的性能问题,为此引出了今天的讨论课题。

一、问题判断及处理

经过与用户的交流,该MySQL云数据库的单表目前数据量达到了超100W条,而该表并未启用索引功能,查询某数据的时间为6.32秒。

我们协助用户对数据表进行索引设计后,查询同样数据的时间达到了ms毫秒级。

二、数据库索引的好处

1、大大加快数据的查询数据,这是最主要的原因。

2、在使用group分组或desc排序子句进行数据查询时,显著减少时间。

三、数据库索引的不利

1、占用磁盘空间。得到了查询速度,牺牲了磁盘空间。创建索引后,将为某列建索引,并将占用额外空间。

2、影响数据操作效率。insert、delete、update语句操作时,每次对索引列进行修改操作,均会同步修改索引文件,这将降低数据的维护速度。

3、创建、数据索引也将耗费时间。该时间随着数据量的增长所耗费的时间也会增加。如下图,为100W的数据库创建单列索引,用时12秒。

四、数据库索引的设计原则

1、索引并非越多越好。每增加一个索引列,就多占用磁盘,并影响insert、update语句性能。

2、避免对经常更新的表进过多的索引,索引中的列尽可能少

3、数据量小的表最好不用索引

4、在不同值较多的列建立索引。如性别列,只有“男”、“女”,没有必要建立索引。

五、建立索引实战测试

1、创建一个带索引的数据表

以下数据表,name带索引

mysql> create table t5 (

-> id int(11) not null,

-> name char(5) not null,

-> index(name));

Query OK, 0 rows affected (0.02 sec)

2、检查索引是否生效

以索引列为查询条件,索引生效

mysql> explain select * from t5 where name='mx' \G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: t5

partitions: NULL

type: ref

possible_keys: name

key: name

key_len: 5

ref: const

rows: 1

filtered: 100.00

Extra: NULL

1 row in set, 1 warning (0.00 sec)

六、小结

服务商提供云业务后,与用户的故障边界越来越模糊,对于paas类产品更是如此,掌握一些必要的技能将更有信心与客户进行能落地的业务交流。

索引对于物联网应用的数据检索非常重要,在上亿条数据中进行数据的操作,如果没有索引的帮助,很难想象,结果什么时候能呈现出来!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信息化漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档