MySQL中字符串索引对update的影响分析

 更新时间:2016年04月19日 11:57:13   作者:moxiaomomo  
这篇文章主要介绍了MySQL中字符串索引对update的影响,结合实例形式分析了添加索引操作对于update语句的性能所造成的影响,需要的朋友可以参考下

本文分析了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存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总

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

相关文章

  • mysql模糊查询like和regexp小结

    mysql模糊查询like和regexp小结

    在mysql中实现模糊查询有两种方法一种是LIKE/NOT LIKE,另一种是REGEXP/NOT REGEXP方法,下面我来给大家介绍它们的用法,希望此教程对各位同学会有所帮助。
    2014-09-09
  • 提升MongoDB性能的方法

    提升MongoDB性能的方法

    在本篇文章中我们给大家总结了提升MongoDB性能的方法以及相关知识点内容,有需要的朋友们可以学习下。
    2018-09-09
  • MySQL数据库SELECT查询表达式解析

    MySQL数据库SELECT查询表达式解析

    这篇文章主要介绍了MySQL数据库SELECT查询表达式解析,文中给大家介绍了select_expr 查询表达式书写方法,需要的朋友可以参考下
    2018-04-04
  • 详解MySQL双活同步复制四种解决方案

    详解MySQL双活同步复制四种解决方案

    这篇文章主要介绍了MySQL 双活同步复制四种方案,主从复制分成三步,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • mysql 8.0.22 winx64安装配置方法图文教程

    mysql 8.0.22 winx64安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql8.0.22 winx64安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Mysql执行原理之索引合并步骤详解

    Mysql执行原理之索引合并步骤详解

    这篇文章主要介绍了Mysql执行原理之索引合并详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • MySql 设置表格字段key中的值

    MySql 设置表格字段key中的值

    本文主要介绍了MySql 设置表格字段key中的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • MySQL多列IN查询的实现

    MySQL多列IN查询的实现

    多列 IN 查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL 多列 IN 查询的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • MySQL开启远程访问权限的最新方法

    MySQL开启远程访问权限的最新方法

    这篇文章主要给大家介绍了关于MySQL开启远程访问权限的最新方法,在MySQL中,要实现远程访问,首先需要在MySQL服务端上开启相应的权限,需要的朋友可以参考下
    2023-08-08
  • mysql双机热备实现方案【可测试】

    mysql双机热备实现方案【可测试】

    双机热备从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。这篇文章主要介绍了mysql双机热备实现方案,需要的朋友可以参考下
    2019-10-10

最新评论