【997755.com澳门葡京】聚簇索引,Mysql聚簇索引和目录覆盖

聚簇索引是对磁盘上实在多少再度协会以按指定的一个或八个列的值排序的算法。特点是储存数据的相继和目录顺序一致。一般景况下主键会默许创立聚簇索引,且一张表只允许存在一个聚簇索引。

一、myisam与innodb引擎索引文件的异议:

在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不一样,myisam对应的是非聚簇索引,而innodb对应的是聚簇索引。聚簇索引也叫复合索引、聚集索引等等。

聚簇索引并不是一种单独的索引类型,而是一种多少存储方式。比如,InnoDB的聚簇索引使用B+Tree的数据结构存储索引和数据。

在《数据库原理》一书中是那样解释聚簇索引和非聚簇索引的区分的:聚簇索引的叶子节点就是数量节点,而非聚簇索引的纸牌节点如故是索引节点,只不过有针对对应数据块的指针。

1.myisam中, 主索引和次索引都指向物理行(磁盘地方);

非聚簇索引

当表有聚簇索引时,它的数据行实际上存放在目录的叶子页(leaf
page)中。因为不可能同时把数据行存放在七个例外的地点,所以一个表只可以有一个聚簇索引(不过,覆盖索引可以效仿七个聚簇索引的情况)。

就此,MYSQL中不一致的多寡存储引擎对聚簇索引的支撑分裂就很好解释了。上面,大家可以看一下MYSQL中MYISAM和INNODB二种引擎的目录结构

2.innodb的主索引文件上,直接存放该行数据,称为聚簇索引,次索引指向对主键的引用;

     
 以myisam为例,一个数额表table中,它是有table.frm、table.myd以及table.myi组成。table.myd记录了多少,table.myi记录了目录的多寡。在选取索引时,先到table.myi(索引树)中举行搜索,取到数据所在table.myd的行位置,获得数码。所以myisam引擎的目录文件和数据文件是单独分开的,则号称非聚簇索引

  • 术语“聚簇”表示数据行和相邻的键值紧凑地囤积在一块。
  • 聚簇索引的二级索引:叶子节点不会保留引用的行的情理地点,而是保存行的主键值。

 

注意: innodb来说

myisam类型的目录,指向数据在行的岗位。即每个索引相对独立,查询用到目录时,索引指向数据的岗位。

对于聚簇索引的积存引擎,数据的物理存放顺序与索引顺序是同一的,即:只要索引是隔壁的,那么相应的多寡肯定也是邻近地存放在磁盘上的,假使主键不是自增id,可以想像,它会干些什么,不断地调动数据的物理地址、分页,当然也有其余部分主意来收缩这么些操作,但却一筹莫展彻底幸免。但,如若是自增的,那就概括了,它只需求一页一页地写,索引结构相对紧密,磁盘碎片少,功能也高。

myisam的目录存储图如下,可以看看,无论是id依旧cat_id,上边都存储有举行物理地址的值。通过主键索引或者次索引来查询数据的时候,都是先查找到物理地方,然后再到大体地方上去寻找数据。

1.主键索引既存储索引值,又在叶子中存储行的数目

聚簇索引

对于非聚簇索引的仓储引擎,表数据存储顺序与索引顺序无关,叶结点蕴含索引字段值及针对数据页数据行的逻辑指针,其行数量与数量表行数据量一致。

997755.com澳门葡京 1

2.假如没有主键,则会Unique key做主键

     
 以innodb为例,在一个数量table中,它的数据文件和目录文件是同一个文书。即在查询进程中,找到了目录,便找到了数据文件。在innodb中,即存储主键索引值,又囤积行数据,称之为聚簇索引

下图1显得了聚簇索引的记录是什么存放的。注意到,节点页只包括了索引列,叶子页包涵行的全套数目,这是B+Tree的数据结构。在这些案例中,索引列包括的是整数值。

 

3.一旦没有unique,则系统生成一个之中的rowid做主键

     
  innodb索引,指向主键对数码的引用。非主键索引则指向对主键的引用。innodb中,没有主意索引,则会使用unique索引,没有unique索引,则会利用数据库内部的一个行的id来作为主键索引。

997755.com澳门葡京 2

innodb的目录存储图如下,大家会发现,主键索引上面直接存储有数据,而次索引下,存储的是主键的id。通过主键查找数据的时候,就会神速查找到多少,然则透过次索引查找数据的时候,必要先查找到呼应的主键id,然后才能招来到对应的多少。

4.像innodb中主键的目录结构中,既存储了主键值,又囤积了行数据,那种协会称为“聚簇索引”

       
在聚簇索引中,数据会被根据顺序整理排列,当使用where举办逐项、范围、大小检索时,会大大加速检索功用。非聚簇索引在储存时不会对数据开展排序,相对爆发的数据文件体积也相比大。

图1 聚簇索引的数据分布

997755.com澳门葡京 3

聚簇索引优劣:

InnoDB将因而主键聚集数据,图1中的“被索引的列”就是主键列。即使没有定义主键,InnoDB会选用一个唯一的非空索引代替。假若没有这么的目录,InnoDB会隐式定义一个主键来作为聚簇索引。InnoDB只集合在同一个页面中的记录,包括相邻键值的页面可能会相距甚远。

 

优势: 依照主键查询条目相比少时,不用回行(数据就在主键节点下)

聚簇主键可能对质量有扶持,但也可能引致严重的特性问题。所以需求精心地考虑聚簇索引,尤其是将表的积存引擎从InnoDB改成其余发动机的时候(反过来也同等)。

nnodb的主索引文件上
直接存放该行数据,称为聚簇索引,次索引指向对主键的引用
myisam中, 主索引和次索引,都指向物理行(磁盘地点).

逆风局: 如若遇上不平整数据插入时,造成频繁的页分裂,插入速度变慢

聚簇的数额有一对尊崇的亮点:

注意: innodb来说, 
1: 主键索引 既存储索引值,又在叶子中存储行的数量
2: 即使没有主键, 则会Unique key做主键 
3: 如若没有unique,则系统生成一个之中的rowid做主键.
4:
像innodb中,主键的目录结构中,既存储了主键值,又囤积了行数据,那种结构称为”聚簇索引”

【997755.com澳门葡京】聚簇索引,Mysql聚簇索引和目录覆盖。高质量索引策略
:对于innodb而言,因为节点下有数据文件,因而节点的解体将会比较慢。由此对此innodb的主键尽量用整型,而且是星罗棋布的整型,借使是无规律的数额,将会时有爆发的页的分歧,影响速度。

  • 可以把有关数据保存在一块儿。例如落到实处电子邮箱时,可以根据用户ID来聚集数据,那样只须要从磁盘读取少数的数据页就能取得某个用户的一体邮件。若是没有聚簇索引,则每封邮件都可能多五回磁盘IO。
  • 数码访问更快。聚簇索引将引得和数据保存在同一个B+Tree中,因而从聚簇索引中获取数据平时比在非聚簇索引中追寻要快。
  • 利用覆盖索引围观的询问可以一贯接纳页节点中的主键值。

二、索引覆盖:

假若设计表和查询时能丰硕利用上边的助益,就能大幅度地升级质量。可是,聚簇索引也有局地缺陷:

目录覆盖:是指若是查询的列恰好是索引的一有些,那么查询只须求在目录文件上开展,不必要回行到磁盘再找数据,那种查询速度越发快,这些场合叫做“索引覆盖”。

  • 聚簇数据最大限度地提升了IO密集型应用的属性,但假使数据总体身处内存中,则做客的逐条就没那么主要了,聚簇索引也就没怎么优势了。
  • 插入速度严重信赖于插入顺序。根据重点的一一插入是加载数据到InnoDB表中速度最快的格局。但倘诺不是循规蹈矩主键顺序加载数据,那么在加载成功后最好使用optimize
    table命令重新协会一下表。
  • 更新聚簇索引列的代价很高,因为会强制InnoDB将各种被更新的行活动到新的地方。
  • 基于聚簇索引的表插入新行,或者主键被更新导致急需活动行的时候,可能面临”页分歧(page
    split)“的题材。当行的主键值需求必须将这一行插入到某个已满的页中时,存储引擎会将该页差距成三个页面来包容该行,那就是三回差别操作。页差别会导致表占用更加多的磁盘空间。
  • 聚簇索引可能造成全表扫描变慢,尤其是行相比较稀疏,或者由于页差异造成数据存储不三番五次的时候。
  • 二级索引(非聚簇索引)可能比想象的要更大,因为在二给索引的纸牌节点包罗了引用行的主键列。
  • 二级索引访问须求一次索引查找,而不是一遍。

三、索引覆盖实验:

最后一点可能令人有些思疑,为何二级索引需求一次索引查找?答案在于二级索引中保留的”行指针“的原形。要切记,二级索引叶子节点保存的不是指向行的情理地方的指针,而是行的主键值。

create table A {

那象征通过二级索引查找行,存储引擎须要找到二级索引的叶子节点得到相应的主键值,然后依照那几个值去聚簇索引中搜寻到对应的行。那里做了再一次的工作:四遍B-Tree查找而不是两回。对于
InnoDB,自适应哈希索引可以收缩那样的重复工作。

id varchar(64) primary key,

InnoDB和MyISAM的数据分布比较

聚簇索引和非聚簇索引的数据分布有分别,以及相应的紧要索引和二级索引的数据分布也有分别,经常会令人倍感困扰和奇怪。来看看InnoDB和MyISAM是什么样存储上边那些表的:

create table layout_test(
    col1 int not null,
    col2 int not null,
    primary key(col1),
    key(col2)
);

要是该表的主键取值为1~10000,按照自由顺序播放并应用optimize
table命令做了优化。换句话说,数据在磁盘上的蕴藏情势已经最优,但行的相继是即兴的。列col2的值是从1~100以内自由赋值,所以有好多双重的值。

ver int,

MyISAM的多寡布局

MyISAM的B+Tree的叶子节点上的data,并不是数码我,而是数据存放的地点。MyISAM依据数据插入的顺序存储在磁盘上,如下图2所示,左侧为行号(row
number),从0先河。因为元组的轻重固定,所以MyISAM很简单的从表的开端地方找到某一字节的岗位。

997755.com澳门葡京 4

图2 MyISAM表layout_test的数据分布

MyISAM建立的primary
key的目录结构大体上如图3和图4所示。MyISAM不帮衬聚簇索引,目录中每一个纸牌节点仅仅包涵行号(row
number),且叶子节点按照col1的顺序存储
。MyISAM是按列值与行号来社团目录的。

997755.com澳门葡京 5

图3 MyISAM表layout_test的主键分布

在图4中,表一共有三列,假若以Col1为主键,可以见见,MyISAM的纸牌节点中保留的实在是指向存放数据的物理块的指针。从MYISAM存储的大体文件看出,MyISAM引擎的目录文件(.MYI)和数据文件(.MYD)是互为独立的,索引文件仅仅保留数据记录的地址。

997755.com澳门葡京 6

图4 MyISAM主键索引的分布

下图5显得col2 的目录结构,与图3的primary
key相比,目录中每一个纸牌节点仅仅包括行号(row
number),且叶子节点根据col2的顺序存储
。在图6中,在Col2起家一个帮衬索引,与图4相比较,MyISAM的叶子节点也是保留指向存放数据的物理块的指针。

故此,结论是MyISAM的primary key和赞助索引没有任何差别。只是Primary
key需要key唯一非空,而赞助索引的key可以重新。

997755.com澳门葡京 7

图5 MyISAM表layout_test的col2列索引的分布

997755.com澳门葡京 8

图6 MyISAM支持索引的遍布

因而,MyISAM中索引检索的算法为第一根据B+Tree搜索算法搜索索引,如若指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

InnoDB的多寡布局

MyISAM索引文件和数据文件是分离的,索引文件仅保留数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree协会的一个目录结构,那棵树的叶节点data域保存了完全的数据记录。那一个目录的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

图7和与图3
MyISAM比较来看,InnoDB索引的每一个叶子节点都包涵了主键值、事务ID、用于工作和MVCC的回流指针以及有着的剩余列(在这些例子中是col2)。若是主键是一个列前缀索引,InnoDB也会含有完整的主键列和剩下的其他列。这种索引叫做聚簇索引

图8方可看到叶节点包括了完全的数额记录。

因为InnoDB的数据文件本身要按主键聚集,所以InnoDB需求表必须有主键(MyISAM能够没有),倘若没有显式指定,则MySQL系统会自动选取一个方可唯一标识数据记录的列作为主键,要是不存在那种列,则MySQL自动为InnoDB表生成一个涵盖字段作为主键,那些字段长度为6个字节,类型为长整形。

997755.com澳门葡京 9

图7 InnoDB表layout_997755.com澳门葡京,test的主键分布

997755.com澳门葡京 10

图8 InnoDB主键索引的遍布

再有少数和MyISAM的例外是,InnoDB的二级索引和聚簇索引很分歧等。InnoDB二级索引的叶子节点中贮存的不是”行指针“,而是主键值,并以此作为指向行的“指针”。那样的方针收缩了当现身在移动照旧数据页差距时二级索引的护卫工作。使用主键值当作指针会让二级索引占用更加多的空中,换到的利益是,InnoDB在运动行时无须更新二级索引中的那个“指针”。

下图9显得了示例表的二级索引col2索引。每一个纸牌节点都含有了索引列(这里是col2),紧接着是主键值(col1)。图10浮现了InnoDB的具备援救索引都引用主键作为data域。

997755.com澳门葡京 11

图9 InnoDB表layout_test的col2列索引的遍布

997755.com澳门葡京 12

图10 InnoDB扶助索引的遍布

InnoDB 表是根据聚簇索引建立的。由此InnoDB
的目录能提供一种分外快捷的主键查找品质。可是,它的提携索引(Secondary
Index,
也就是非主键索引)也会含有主键列,所以,如若主键定义的相比较大,其余索引也将很大。若是想在表上定义
、很多索引,则争取尽量把主键定义得小片段。InnoDB 不会压缩索引。

}

InnoDB与MyIASM索引和多少布局相比较

图7讲述InnoDB和MyISAM怎么样存放表的抽象图。相比InnoDB和MyISAM的主键索引与二级索引。

InnoDB的的二级索引的纸牌节点存放的是KEY字段加主键值。由此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到呼应的数据块。而MyISAM的二级索引叶子节点存放的或者列值与行号的结缘,叶子节点中保存的是多少的大体地址。所以可以看到MYISAM的主键索引和二级索引没有任何差异,主键索引仅仅只是一个名叫PRIMARY的绝无仅有、非空的目录,且MYISAM引擎中可以不设主键。

997755.com澳门葡京 13

图7 聚簇和非聚簇表相比较图

为了更形象表明那二种索引的界别,我们假想一个表如下图8储存了4行数据。其中id作为主索引,name作为协理索引。图示清晰的显得了聚簇索引和非聚簇索引的差距。

对于聚簇索引存储来说,行数据和主键B+树存储在协同,协理键B+树只存储协理键和主键,主键和非主键B+树大概是两种类型的树。对于非聚簇索引存储来说,主键B+树在叶子节点存储指向真正数据行的指针,而非主键。

InnoDB使用的是聚簇索引,将主键社团到一棵B+树中,而行数据就储存在叶子节点上,若使用”where
id =
14″那样的口径查找主键,则按照B+树的检索算法即可寻找到相应的叶节点,之后获得行数据。若对Name列举行规范搜索,则必要多个步骤:第一步在帮助索引B+树中追寻Name,到达其叶子节点获取相应的主键。第二步使用主键在主索引B+树种再举办一回B+树检索操作,最后抵达叶子节点即可得到整行数据。

MyISM使用的是非聚簇索引,非聚簇索引的两棵B+树看起来没什么两样,节点的构造完全一致只是存储的始末见仁见智而已,主键索引B+树的节点存储了主键,协助键索引B+树存储了支持键。表数据存储在独立的地方,那两颗B+树的叶子节点都选用一个地点指向真正的表数据,对于表数据的话,那多个键没有其它差异。由于索引树是单身的,通过扶助键检索无需访问主键的索引树。

997755.com澳门葡京 14

图8 聚簇和非聚簇表形象相比图

俺们器重关切聚簇索引,看上去聚簇索引的功效斐然要小于非聚簇索引,因为每便使用帮助索引检索都要经过一次B+树查找,那不是多此一举吗?聚簇索引的优势在哪?
1
出于行数据和叶子节点存储在一块,那样主键和行数据是同台被载入内存的,找到叶子节点就可以立刻将行数据重返了,若是根据主键Id来公司数据,得到多少更快。
2 协理索引使用主键作为”指针”
而不是利用地方值作为指针的裨益是,裁减了当现身在移动仍旧数据页差距时拉扯索引的维护工作,使用主键值当作指针会让帮衬索引占用越多的长空,换到的功利是InnoDB在运动行时无须更新协助索引中的那一个”指针”。也就是说行的职责(达成中经过16K的Page来定位,前边会涉及)会趁着数据库里多少的改动而暴发变化(后边的B+树节点差距以及Page的崩溃),使用聚簇索引就能够有限匡助不管这么些主键B+树的节点怎么样转移,支持索引树都不受影响。

标准:在id、ver上有联合索引,表中有几个很长的字段,总共100000条数据

在InnoDB表中按主键顺序插入行

只要正在利用InnoDB表并且没有啥样数据必要会聚,那么可以定义一个代理键作为主键,那种主键的数据应该和利用毫不相关,最简便易行的措施是使用auto_increment自增列。那样可以保障数据行是根据顺序写入,对于依据主键做涉嫌操作的性质也会更好。

最好防止随意的聚簇索引,越发对于I/O密集型的运用。例如,从性质的角度考虑,使用UUID作为聚簇索引会很糟糕:它使得聚簇索引的插入变得完全自由,那是最坏的状态,使得数据尚未任何聚众特性。

为了演示那或多或少,大家做如下四个标准化测试。第二个使用整数ID插入shopinfo表,整数ID自增且为主键:

CREATE TABLE `shopinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  `shop_id` int(11) NOT NULL COMMENT '商店ID',
  `goods_id` int(11) NOT NULL COMMENT '物品ID',
  `pay_type` int(11) NOT NULL COMMENT '支付方式',
  `price` decimal(10,2) NOT NULL COMMENT '物品价格',
  `comment` varchar(4000) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `shop_id` (`shop_id`,`goods_id`),
  KEY `price` (`price`),
  KEY `pay_type` (`pay_type`),
  KEY `idx_comment` (`comment`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商店物品表';

其次个例证是shopinfo_uuid表,除了主键改为UUID,其他和后边的shopinfo表完全相同。

CREATE TABLE `shopinfo_uuid` (
  `uuid` varchar(36) NOT NULL,
  `shop_id` int(11) NOT NULL COMMENT '商店ID',
  `goods_id` int(11) NOT NULL COMMENT '物品ID',
  `pay_type` int(11) NOT NULL COMMENT '支付方式',
  `price` decimal(10,2) NOT NULL COMMENT '物品价格',
  `comment` varchar(4000) DEFAULT NULL,
  PRIMARY KEY (`uuid`),
  UNIQUE KEY `shop_id` (`shop_id`,`goods_id`),
  KEY `price` (`price`),
  KEY `pay_type` (`pay_type`),
  KEY `idx_comment` (`comment`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商店物品表';

俺们先向那多少个表各插入1万条记下。然后再向那三个表继续插入9万条记下,观望这多个表的插入耗时和表索引大小,下表对测试结果举办相比。其中,查看指定库的指定表shopinfo的目录大徐熙娣(英文名:Elephant Dee)女士QL语句:
SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES WHERE table_schema = 'study' and table_name = 'shopinfo';

表名 行数 时间 索引大小(MB)
shopinfo 10000 0.755s 4.08
shopinfo_uuid 10000 1.699s 8.16
shopinfo 90000 8.014s 29.47
shopinfo_uuid 90000 46.111s 60.58

经过测试,插入同样的行数和内容(除主键内容),向UUID主键插入行不仅开销的小运更长,而且索引占用的空中也更大。这一端是出于主键字段更长,另一方面毫无疑问是由于页差别和心碎导致的。

如图9所示,由于主键的值是逐一的,InnoDB把每一条记下都存储在上一条记下的前边。当达到页的最大填充因猪时(InnoDB默许的最大填充因子是页大小的15/16,留出的一部分空间用于将来修改),下一条记下就会写入新的页中。一旦数据根据那样逐一的办法加载,主键页就会近似于被依次的笔录填满,那也是所企盼的结果。

997755.com澳门葡京 15

图9 向聚簇索引插入顺序的索引值

而当使用UUID的聚簇索引的表往插入数据,如图10所示,因为新行的主键值不肯定比此前的插入值大,所以InnoDB不能不难的连日把新行插入到目录的最后,而是需求为新的行追寻适合的职分—-经常是已有数量的中游地点—-并且分配空间。那会扩张很多附加的干活,并促成数据分布不够优化。

997755.com澳门葡京 16

图10 向聚簇索引插入无序的值

上边总括运用UUID作为主键的部分缺点:

  • 写入目的页可能已经刷到磁盘上并从缓存中移除,或者是还并未被加载到缓存中,InnoDB在插入此前不得不先找到并从磁盘读取目标页到内存中,那将导致多量的肆意I/O;
  • 因为写入是乱序的,InnoDB不得不频仍的做页差距操作,以便为新的行分配空间。页不相同会促成运动大量数额,两遍插入最少要求修改多个页而不是一个,蕴涵几个叶子节点和一个父节点。
  • 由于反复的页不一致,页会变得稀疏并被不规则的填写,所以最终数额会有散装。

把这几个随机值载入到聚簇索引将来,必要做三遍optimize
table来重建表并优化页的填充。

注意,顺序主键也有瑕疵:对于高并发工作负荷,在InnoDB中按主键顺序插入可能会促成鲜明的争用。主键的上界会变成“热点”。因为兼具的插入都发出在那边,所以并发插入可能导致间隙锁竞争。另一个紧俏可能是auto_increment锁机制;倘使碰着那一个题材,则可能需求考虑重新设计表或者采纳,比如接纳范围生成单调递增的主键ID,插表不利用auto_increment机制,或者转移innodb_autonc_lock_mode配置。

问题:为什么select id from A order by id特别慢?而select id from A order
by id,ver特别快?

原因:

1.假使是myisam引擎的话,会将id和ver都存放在目录文件中,所以order by
id和order by
id,ver不会产出速度上的出入,一遍都发出索引覆盖,所以判断引擎为innodb;

2.由于innodb是聚簇索引,主索引id文件上,存放了该行的数据,当表中某个字段的数量很大时,在硬盘上一个数额块所能存放的行数就减弱,所以数据块变多。当order
by id时,会扫描很多少个例外的数据块,导致品质下跌。而order by
id,ver为联合索引(次索引),次索引不用扫描很大的数据量,并且只筛选id,爆发索引覆盖,所以速度快很多。

试行步骤:

1.率先查看是还是不是打开profiling功效:SHOW VARIABLES LIKE ‘%pro%’;

2.开启profiling:SET profiling=1;

3.查看sql语句执行结果:SHOW profiles;

4.两手空空数据表:

CREATE TABLE `t7` (

`id` char(64) NOT NULL,

`ver` int(11) NOT NULL DEFAULT ‘0’,

`str1` varchar(3000) DEFAULT NULL,

`str2` varchar(3000) DEFAULT NULL,

`str3` varchar(3000) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `idver` (`id`,`ver`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `t8` (

`id` char(64) NOT NULL,

`ver` int(11) NOT NULL DEFAULT ‘0’,

`str1` varchar(3000) DEFAULT NULL,

`str2` varchar(3000) DEFAULT NULL,

`str3` varchar(3000) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `idver` (`id`,`ver`)

) ENGINE=innodb DEFAULT CHARSET=utf8;

5.创立php文件批量插入数据:

$mysqli = new mysqli(“127.0.0.1”, “root”, “”, “test”);

$mysqli->query(“set names utf8”);

$str = str_repeat(‘m’, 3000);

for ($i=1;$i<=10000;$i++) {

$id = dechex($i);

$sql = sprintf(“insert into t8 values (‘%s’,%d,’%s’,’%s’,’%s’)”, $i,$i,$str,$str,$str);

$mysqli->query($sql);

}

echo “insert success”;

$mysqli->close();

?>

6.独家实施t7和t8,查看sql语句执行结果:

997755.com澳门葡京 17

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website