|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
尽管MySQL也有一个认证培训项目,但是它的培训却要比Oracle或MS-SQL相差很远。尽管有的使用MySQL的用户表示,MySQL很容易上手,但是对于具有企业级数据库需求的用户来说,mysql|技能|索引|优化索援用来疾速地寻觅那有特定值的纪录,一切MySQL索引都以B-树的情势保留。假如没有索引,实行查询时MySQL必需从第一个纪录入手下手扫描全部表的一切纪录,直至找到切合请求的纪录。内外面的纪录数目越多,这个操纵的价值就越高。假如作为搜刮前提的列上已创立了索引,MySQL无需扫描任何纪录便可敏捷失掉方针纪录地点的地位。假如表有1000个纪录,经由过程索引查找纪录最少要比按次扫描纪录快100倍。 假定我们创立了一个名为people的表:
CREATETABLEpeople(peopleidSMALLINTNOTNULL,nameCHAR(50)NOTNULL);
然后,我们完整随机把1000个分歧name值拔出到people表。下图显现了people表地点数据文件的一小部分:
能够看到,在数据文件中name列没有任何明白的序次。假如我们创立了name列的索引,MySQL将在索引中排序name列:
关于索引中的每项,MySQL在外部为它保留一个数据文件中实践纪录地点地位的“指针”。因而,假如我们要查找name即是“Mike”纪录的peopleid(SQL命令为“SELECTpeopleidFROMpeopleWHEREname=Mike;”),MySQL可以在name的索引中查找“Mike”值,然后间接转到数据文件中响应的行,正确地前往该行的peopleid(999)。在这个过程当中,MySQL只需处置一个行就能够前往了局。假如没有“name”列的索引,MySQL要扫描数据文件中的一切纪录,即1000个纪录!明显,必要MySQL处置的纪录数目越少,则它完成义务的速率就越快。
索引的范例
MySQL供应多种索引范例供选择:
一般索引
这是最基础的索引范例,并且它没有独一性之类的限定。一般索引能够经由过程以下几种体例创立:
创立索引,比方CREATEINDEX<索引的名字>ONtablename(列的列表);修正表,比方ALTERTABLEtablenameADDINDEX[索引的名字](列的列表);创立表的时分指定索引,比方CREATETABLEtablename([...],INDEX[索引的名字](列的列表));
独一性索引
这类索引和后面的“一般索引”基础不异,但有一个区分:索引列的一切值都只能呈现一次,即必需独一。独一性索引能够用以下几种体例创立:
创立索引,比方CREATEUNIQUEINDEX<索引的名字>ONtablename(列的列表);修正表,比方ALTERTABLEtablenameADDUNIQUE[索引的名字](列的列表);创立表的时分指定索引,比方CREATETABLEtablename([...],UNIQUE[索引的名字](列的列表));
主键
主键是一种独一性索引,但它必需指定为“PRIMARYKEY”。假如你已经用过AUTO_INCREMENT范例的列,你大概已熟习主键之类的观点了。主键一样平常在创立表的时分指定,比方“CREATETABLEtablename([...],PRIMARYKEY(列的列表));”。可是,我们也能够经由过程修正表的体例到场主键,比方“ALTERTABLEtablenameADDPRIMARYKEY(列的列表);”。每一个表只能有一个主键。
全文索引
MySQL从3.23.23版入手下手撑持全文索引和全文检索。在MySQL中,全文索引的索引范例为FULLTEXT。全文索引能够在VARCHAR大概TEXT范例的列上创立。它能够经由过程CREATETABLE命令创立,也能够经由过程ALTERTABLE或CREATEINDEX命令创立。关于年夜范围的数据集,经由过程ALTERTABLE(大概CREATEINDEX)命令创立全文索引要比把纪录拔出带有全文索引的空表更快。本文上面的会商不再触及全文索引,要懂得更多信息,请拜见MySQLdocumentation。
单列索引与多列索引
索引能够是单列索引,也能够是多列索引。上面我们经由过程详细的例子来讲明这两种索引的区分。假定有如许一个people表:
CREATETABLEpeople(peopleidSMALLINTNOTNULLAUTO_INCREMENT,firstnameCHAR(50)NOTNULL,lastnameCHAR(50)NOTNULL,ageSMALLINTNOTNULL,townidSMALLINTNOTNULL,PRIMARYKEY(peopleid));
[1][2][3]下一页
为维持生产环境和非生产环境需要不断地投入管理支持费用MySQL学习教程,最终导致客户为数据库资源投入巨额成本。 |
|