本文分析了mysql中字符串索引对update的影响。分享给大家供大家参考,具体如下:

对某一个类型为varchar的字段添加前缀索引后,基于该子段的条件查询时间基本大幅下降;但对于update操作,所耗的时间却急剧上升,主要原因是在更新数据的同时,mysql会执行索引的更新。

下面做了一个简单的试验。

(1)首先对某个亿级记录的表字段所有记录执行更新:

for idx in range(1, count+1):

sql = "update tbl_name set platforms='"+datetime.now().strftime('%y%m%d%h%m%s%f')+"' where id="+str(idx)+";"

cursor.execute(sql)

统计用时4个小时左右。

(2)然后对某个亿级记录的表子段添加索引:

sql = "alter table tbl_name add index platforms_index(platforms(8));"

cursor.execute(sql)

然后再执行同上的update语句,统计用时将近9个小时。

(3)由此可见字符串索引对于update等操作在性能上有极大的影响。

虽然以上小试验并没有多大实际意义,但是可以延伸一下,如果不对该字段添加索引,而是直接把该字段数据存储到另一个小表b,然后在该表添加一个id字段映射到小表b,然后再执行update操作;这样性能又如何呢?

理论上性能应该与记录的重复度有关,如果重复率高,小表b将会很小(unique去重);而更新所用时间为通过原表映射查询表b字段的时间+更新表b记录的时间,总体上应该比更新记录的时间+更新索引的时间要少。

不过只是估算,结果如何感兴趣的朋友可以动手验证一下。

希望本文所述对大家mysql数据库计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

mysql修改索引对交易影响吗_MySQL中字符串索引对update的影响分析相关推荐

  1. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

  2. mysql修改外键字段报异常_mysql修改索引时,外键约束造成的奇怪问题_MySQL

    Mysql外键 bitsCN.com mysql修改索引时,外键约束造成的奇怪问题 事情是这样的,在Windows的mysql5.5 ,我想修改一个表的索引,于是执行 [sql] ALTER TABL ...

  3. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  4. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

    子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...

  5. mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程

    MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...

  6. mysql聚集索引可以多列吗_MySQL使用单列索引和多列索引

    讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则. 1. 单列索引 在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一.可以考虑使用索引的主要有两种类型的列:在W ...

  7. MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询

    前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...

  8. mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询

    前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...

  9. mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么

    mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...

最新文章

  1. main方法_错误: 在类 ZiFUChuan.Pyramid 中找不到 main 方法, 请将 main 方法定义为:
  2. 微信小程序爬虫python_爬虫爬取微信小程序
  3. SQLServer2000同步复制技术实现步骤(收藏)
  4. FVR420v试用感受之六!
  5. 【C++】构建哈希表
  6. [译] 关于Angular的变更检测(Change Detection)你需要知道这些
  7. setSignVisible的修改
  8. 系统搭建遇到问题3:Ubuntu问题造成网卡名称异常导致Vivado绑定网卡地址的Lic无法正常工作(JESD)...
  9. 越来越像QQ?微信支持批量删好友啦!安卓用户“不配”
  10. python嵌套列表法实现树_在python中创建递归迭代嵌套列表的“数据树”路径
  11. 4场直播丨Oracle、openGauss、易鲸捷EsgynDB
  12. html制作作业提交入口,制作网页详细操作步骤
  13. git 将多条提交合并为一条
  14. 绕过 office 宏密码保护
  15. sqlite developer过期解决办法
  16. 2021云计算技能竞赛真题卷(附标准答案)
  17. 上海“生煎”地图大公开
  18. 软件产品的税收优惠政策
  19. 九章算术 四:《少广》
  20. quest3d通道英汉对照部分

热门文章

  1. 视频技术详解:RTMP H5 直播流技术解析
  2. JAVA入门[23]-SpringBoot配置Swagger2
  3. HSRP (不同VLAN之间的热备份路由协议)
  4. nodejs全局安装和本地安装的区别
  5. J2SE核心开发实战(二)——字符串与包装类
  6. Oracle442个应用场景-----------Oracle数据库物理结构
  7. 第三章 经典场景设计
  8. .net framework 25007 error
  9. Sicily 1694. Spiral
  10. ADO.NET Entity Framework -Code Fisrt 开篇(一)