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

作者:moxiaomomo 时间:2024-01-20 19:00:10 

本文分析了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,字符串索引,update
0
投稿

猜你喜欢

  • Django ContentType组件详解

    2022-04-11 14:19:26
  • Python中使用Opencv开发停车位计数器功能

    2022-04-27 17:26:44
  • 微信小程序wx.request拦截 器使用详解

    2023-07-22 09:11:55
  • python中的错误如何查看

    2021-05-03 08:31:22
  • Vue3中的极致防抖/节流详解(附常见方式防抖/节流)

    2024-05-08 10:12:37
  • Python Web版语音合成实例详解

    2021-11-28 04:37:20
  • MySQL Cluster集群的初级部署教程

    2024-01-22 01:50:16
  • python实现AES算法及AES-CFB8加解密源码

    2022-06-14 01:24:01
  • firefox 2正则表达式

    2008-08-25 19:15:00
  • 与 Function 和 Object 相关的有趣代码

    2010-05-07 12:29:00
  • gin自定义中间件解决requestBody不可重复读问题(最新推荐)

    2023-10-26 05:19:12
  • Python 实现局域网远程屏幕截图案例

    2021-05-13 13:43:43
  • Dreamweaver2004 中文乱码解决方案

    2007-01-31 10:20:00
  • jQuery模板提案

    2010-03-30 18:27:00
  • SQLServer 2000 升级到 SQLServer 2008 性能之需要注意的地方之一

    2012-02-25 19:44:26
  • 微信小程序实现渐入渐出动画效果

    2024-04-23 09:32:53
  • 教你用Python爬取英雄联盟皮肤原画

    2022-11-05 06:03:30
  • python用selenium打开chrome浏览器保持登录方式

    2022-02-19 10:28:08
  • go语言reflect.Type 和 reflect.Value 应用示例详解

    2023-07-18 11:28:43
  • 用生成器来改写直接返回列表的函数方法

    2022-04-24 15:36:08
  • asp之家 网络编程 m.aspxhome.com