mysql修改索引对交易影响吗_MySQL中字符串索引对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中字符串索引对update的影响分析相关推荐
- pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序
pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录
- mysql修改外键字段报异常_mysql修改索引时,外键约束造成的奇怪问题_MySQL
Mysql外键 bitsCN.com mysql修改索引时,外键约束造成的奇怪问题 事情是这样的,在Windows的mysql5.5 ,我想修改一个表的索引,于是执行 [sql] ALTER TABL ...
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)
子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...
- mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程
MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...
- mysql聚集索引可以多列吗_MySQL使用单列索引和多列索引
讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则. 1. 单列索引 在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一.可以考虑使用索引的主要有两种类型的列:在W ...
- MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询
前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...
- mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询
前言 说到覆盖索引之前,先要了解它的数据结构:B+树. 先建个表演示(为了简单,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml ...
- mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...
最新文章
- main方法_错误: 在类 ZiFUChuan.Pyramid 中找不到 main 方法, 请将 main 方法定义为:
- 微信小程序爬虫python_爬虫爬取微信小程序
- SQLServer2000同步复制技术实现步骤(收藏)
- FVR420v试用感受之六!
- 【C++】构建哈希表
- [译] 关于Angular的变更检测(Change Detection)你需要知道这些
- setSignVisible的修改
- 系统搭建遇到问题3:Ubuntu问题造成网卡名称异常导致Vivado绑定网卡地址的Lic无法正常工作(JESD)...
- 越来越像QQ?微信支持批量删好友啦!安卓用户“不配”
- python嵌套列表法实现树_在python中创建递归迭代嵌套列表的“数据树”路径
- 4场直播丨Oracle、openGauss、易鲸捷EsgynDB
- html制作作业提交入口,制作网页详细操作步骤
- git 将多条提交合并为一条
- 绕过 office 宏密码保护
- sqlite developer过期解决办法
- 2021云计算技能竞赛真题卷(附标准答案)
- 上海“生煎”地图大公开
- 软件产品的税收优惠政策
- 九章算术 四:《少广》
- quest3d通道英汉对照部分