基于MySQL自增ID字段增量扫描研究

上传人:m**** 文档编号:68911071 上传时间:2019-01-11 格式:DOCX 页数:18 大小:35.01KB
返回 下载 相关 举报
基于MySQL自增ID字段增量扫描研究_第1页
第1页 / 共18页
基于MySQL自增ID字段增量扫描研究_第2页
第2页 / 共18页
基于MySQL自增ID字段增量扫描研究_第3页
第3页 / 共18页
基于MySQL自增ID字段增量扫描研究_第4页
第4页 / 共18页
基于MySQL自增ID字段增量扫描研究_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于MySQL自增ID字段增量扫描研究》由会员分享,可在线阅读,更多相关《基于MySQL自增ID字段增量扫描研究(18页珍藏版)》请在金锄头文库上搜索。

1、基于MySQL自增ID字段增量扫描研究1.问题 12.背景 13.InnoDB表23.1.自增ID为主键23.2.自增ID为普通索引43.3.原因分析 74.MyISAM表84.1.自增ID为主键84.2.自增ID为普通索引114.3.原因分析 145.研究结论 141.问题对于MySQL表,如果自增ID不是主键时,是否可以用来做增量查询?2.背景需要按照自增ID字段进行增量查询,有些表的自增ID是主键,而有些表的自增只是普通索引,有些采用MyISAM,有些采用InnoDB。如果采用粗暴的“SELECT*FROMtableWHEREf_idMORDERBYf_idLIMITN”,功能上没有任何

2、问题,但当表的记录数很大时(比如1000万条),“ORDERBYf_id”会极影响查询效率。为此,需要弄清楚“SELECT*FROMtableWHEREf_idMLIMITN”的可行性,即增量查询时,不指定“ORDERBYf_id”。研究基于的MySQL(注:5.6.7之前最大分区数限制为1024,从5.6.7开始调整为8192,另外5.6版本分区表不支持HANDLER):MySQLtestselectversion();+-+|version()|+-+|5.7.18|+-+1rowinset(0.01sec)3.InnoDB表3.1.自增ID为主键建表SQL语句:DROPTABLEIFEX

3、ISTStableA1;CREATETABLEtableA1(idBIGINTNOTNULLAUTO_INCREMENTPRIMARYKEY,afINTNOTNULL,bfINTNOTNULL,cfINTNOTNULL,INDEXidx_af(af),INDEXidx_bf(bf)ENGINE=InnoDB;依顺序执行下列插入操作:INSERTINTOtableA1(af,bf,cf)VALUES(1,2,1);INSERTINTOtableA1(af,bf,cf)VALUES(2,1,2);INSERTINTOtableA1(id,af,bf,cf)VALUES(11,12,11,11);I

4、NSERTINTOtableA1(id,af,bf,cf)VALUES(12,11,12,12);INSERTINTOtableA1(af,bf,cf)VALUES(13,16,13);INSERTINTOtableA1(id,af,bf,cf)VALUES(3,3,3,3);INSERTINTOtableA1(af,bf,cf)VALUES(14,17,14);INSERTINTOtableA1(id,af,bf,cf)VALUES(5,15,5,5);查看结果:/按自增ID有序(自增ID为主键)MySQLtestSELECT*FROMtableA1;+-+-+-+-+|id|af|bf|c

5、f|+-+-+-+-+|1|1|2|1|2|2|1|2|3|3|3|3|5|15|5|5|11|12|11|11|12|11|12|12|13|13|16|13|14|14|17|14|+-+-+-+-+8rowsinset(0.00sec)/按自增ID有序(自增ID为主键)MySQLtestSELECT*FROMtableA1WHEREid=1LIMIT10;+-+-+-+-+|id|af|bf|cf|+-+-+-+-+|1|1|2|1|2|2|1|2|3|3|3|3|5|15|5|5|11|12|11|11|12|11|12|12|13|13|16|13|14|14|17|14|+-+-+

6、-+-+8rowsinset(0.00sec)/按自增ID有序(自增ID为主键)MySQLtestSELECT*FROMtableA1WHEREid=2LIMIT10;+-+-+-+-+|id|af|bf|cf|+-+-+-+-+|2|2|1|2|3|3|3|3|5|15|5|5|11|12|11|11|12|11|12|12|13|13|16|13|14|14|17|14|+-+-+-+-+7rowsinset(0.00sec)/按自增ID有序(自增ID为主键)MySQLtestSELECT*FROMtableA1WHEREid=2LIMIT7;+-+-+-+-+|id|af|bf|cf|+

7、-+-+-+-+|2|2|1|2|3|3|3|3|5|15|5|5|11|12|11|11|12|11|12|12|13|13|16|13|14|14|17|14|+-+-+-+-+7rowsinset(0.00sec)可以看到,当自增ID为主键时,自增ID乱序插入,查询结果也是按自增ID有序(实测有序插入一样有序),因此可以放心依自增ID增量查询,而不必指定“ORDERBYf_id”。http:/3.2.自增ID为普通索引DROPTABLEIFEXISTStableA2;CREATETABLEtableA2(idBIGINTNOTNULLAUTO_INCREMENT,afINTNOTNULL

8、,bfINTNOTNULL,cfINTNOTNULL,UNIQUEINDEXidx_af(af),INDEXidx_id(id),INDEXidx_bf(bf)ENGINE=InnoDB;依顺序执行下列插入操作:INSERTINTOtableA2(af,bf,cf)VALUES(1,2,1);INSERTINTOtableA2(af,bf,cf)VALUES(2,1,2);INSERTINTOtableA2(id,af,bf,cf)VALUES(11,12,11,11);INSERTINTOtableA2(id,af,bf,cf)VALUES(12,11,12,12);INSERTINTOta

9、bleA2(af,bf,cf)VALUES(13,16,13);INSERTINTOtableA2(id,af,bf,cf)VALUES(3,3,3,3);INSERTINTOtableA2(af,bf,cf)VALUES(14,17,14);INSERTINTOtableA2(id,af,bf,cf)VALUES(5,15,5,5);查看结果:/总共8条记录MySQLtestSELECTCOUNT(1)FROMtableA2;+-+|COUNT(1)|+-+|8|+-+1rowinset(0.00sec)/按自增ID无序,但按唯一索引有序MySQLtestSELECT*FROMtableA2

10、;+-+-+-+-+|id|af|bf|cf|+-+-+-+-+|1|1|2|1|2|2|1|2|3|3|3|3|12|11|12|12|11|12|11|11|13|13|16|13|14|14|17|14|5|15|5|5|+-+-+-+-+8rowsinset(0.00sec)/按自增ID无序,但按唯一索引有序MySQLtestSELECT*FROMtableA2WHEREid=1LIMIT10;+-+-+-+-+|id|af|bf|cf|+-+-+-+-+|1|1|2|1|2|2|1|2|3|3|3|3|12|11|12|12|11|12|11|11|13|13|16|13|14|14|17|14|5|15|5|5|+-+-+-+-+8rowsinset(0.00sec)/按自增ID无序,但按唯一索引有序MySQLtestSELECT*FROMtableA2WHEREid=2LIMIT10;+-+-+-+-+|id|af|bf|cf|+-+-+-+-+|2|2|1|2|3|3|3|3|12|11|12|12|11|12|11|11|13|13|16|13|14|14|17|14|5|15|5|5|+-+-+-+-+7r

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 数据库

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号