• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 31次浏览 已收录 0个评论

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

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

下面做了一个本文来源gao@daima#com搞(%代@#码网简单的试验。

(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数据库计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL中字符串索引对update的影响分析_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址