本文分析了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索引对排序的影响实例分析,包括了mysql索引对排序的影响实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了mysql索引对排序的影响。分享给大家供大家参考,具体如下: 索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。 测试 1、创建测试表:t15表 2、插入1W行数据 3、商场网站,一般都会按照
问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本
我习惯于在JavaScript中这样做: 斯威夫特没有这个功能,怎么做类似的东西?
问题内容: 如何在特定索引处拆分字符串?例如,在索引10处分割字符串,使该字符串现在等于直到索引10的所有内容,然后转储其余部分。 问题答案: 关于或取决于索引10是否应包含或不包含索引呢?您必须检查一下。 一个替代方案是
问题内容: 我刚刚发现,根据我们执行最多的查询,当前的数据库设计效率有些低下。IBAN是根据国家/地区特定格式的位置坐标。 由于我们主要在某些表中的IBAN列的精确子字符串上执行s和s,因此我的问题是将索引分配给列的子字符串 我们是否被迫向表中添加冗余和索引列?IE。添加列,,,,,(其中IT_字段只考虑在开始ITXX帐户)每一个与适当的二级索引 或 是否有任何特殊的二级索引的,可以仅在一列的子串
本文向大家介绍浅析SQL Server 聚焦索引对非聚集索引的影响,包括了浅析SQL Server 聚焦索引对非聚集索引的影响的使用技巧和注意事项,需要的朋友参考一下 前言 在学习SQL 2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQL Server 2012 T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄书上内容,如若是这样那将没有任何意义,学习的过程必须同时也是一