1.1索引的创建 1.1.1主键索引的创建 创建表的时候创建主键索引 createtableaaa(idintprimarykey,namevarchar(64)notnulldefault”); 先建表再建主键索引 createtableaaa(idint,namevarchar(64)notnulldefault”); altertableaaaaddprimarykey(id); 主键索引的特点 1)一个表最多只能有一个主键 2)一个主键可以指向多列(复合主键) 3)主键索引的效率是最高的,因此我们应该给id一般id是自增的 4)主键索引的列是不能重复也不能为null 1.1.2唯一索引的创建直接在创建表的时候,指定某列或某几列为唯一索引 mysqlcreatetableaaa(idint,namevarchar(64)notnulldefault”,emailvarchar(64)notnulldefault”unique); 建表后再创建唯一索引 1)mysqlcreateuniqueindexuni_nameonaaa(name); 2)mysqlaltertableaaaaddunique(email); 唯一索引的特点 1)一张表中可以有多个唯一索引 2)唯一索引不能重复,但是如果你没有指定notnull,唯一索引可以为null,而且可以有多个。 3)什么时候使用唯一索引,当某列数据不会重复时才能使用 4)唯一索引效率也很高,可以考虑优先使用 1.1.3普通索引的创建直接在创建表的时候,指定某列或某几列为普通索引 mysqlcreatetableaaa(idint,namevarchar(64)notnulldefault”,namevarchar(64)notnulldefault”index); 建表后再创建普通索引 1)mysqlcreateindexind_nameonaaa(name); 2)mysqlaltertableaaaaddindex(name); 特点 1)一张表中可以有多个普通索引,一个普通索引也可以指向多列 2)普通索引列的数据可以重复 3)效率相对而言低 1.1.4全文索引的创建 概述:全文索引是针对对文章,汉字,英文的索引,可以快速检索到文章中的某个关键字 CREATETABLEarticles( idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY, titleVARCHAR(), bodyTEXT, FULLTEXT(title,body) )enginemyisamcharset=utf8; 使用:select*fromarticleswherematch(body)against(‘天气’); 特点 1)Mysql默认的全文索引,只对myisam存储引擎生效 2)Mysql默认的全文索引,只支持英文 3)停止词:对于特别普通的字母,不会建索引 4)匹配度:全文索引是按照一定概率进行匹配的。 如何解决mysql的全文索引不支持中文的问题 1)使用mysql的一个中文检索插件mysqlcft 2)可以使用专门的中文检索引擎sphinx中文版(coreseek)1.2索引的查询 desc表名 showkeysfrom表名G showindexfrom表名G showindexesfrom表名G 1.3索引的修改 先删除载添加 1.4索引的删除 DROPINDEX索引名ON表; ALTERTABLE表名DROPINDEX索引名; 1.6索引的注意事项较为频繁的作为查询条件的字段应该创建索引唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件更新非常频繁的字段不适合创建索引不会出现WHERE子句的字段不该创建索引.
长按