简单MySQL索引优化基础~

原文地址:简单MySQL索引优化基础~

索引是啥?有啥用?这个不聊了,直接来看MySQL中的索引类型:

  1. UNIQUE 唯一索引,同列不可出现相同值,但可有NULL值。

  2. INDEX 普通索引,允许出现相同索引内容。

  3. PRIMARY KEY 主键索引,同列不可出现相同值,也不可为NULL值,对于同一张表中只能存在一个主键索引。

  4. FULLTEXT INDEX 全文索引。

上述前三种索引类型都是针对列的值,第四种可针对列的值中的单个单词,如一篇文章中的某个词,然而并无卵用,因为只有MyISAM及英文支持,且效率就惨不忍睹了,不过可用coreseek或xunsearch等第三方应用完成全文查找。

来看下索引的CURD操作。

1、索引的创建

  1. ALTER TABLE适用于表创建完毕之后再添加。

  2. CREATE INDEX可对表增加普通索引或UNIQUE索引。

  3. 建表时添加索引。

ALERT TABLE语句格式如下:

ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

案例如下:

## 索引名,可要可不要;如果不要,当前的索引名就是该字段名ALTER TABLE `table_name` ADD INDEX `index_name` (`column_list`) ALTER TABLE `table_name` ADD UNIQUE (`column_list`)ALTER TABLE `table_name` ADD PRIMARY KEY (`column_list`)ALTER TABLE `table_name` ADD FULLTEXT KEY (`column_list`)

CREATE INDEX语句格式如下:

CREATE INDEX 索引名称 ON 表名 (字段名称)

案例如下:

CREATE INDEX index_name ON table_name (column_list)CREATE UNIQUE INDEX index_name ON table_name (column_list)

建表时添加索引案例如下:

CREATE TABLE `test1` (  `id` smallint(5) UNSIGNED AUTO_INCREMENT NOT NULL,  `username` varchar(64) NOT NULL COMMENT '用户名',  PRIMARY KEY (`id`),  UNIQUE KEY `unique1` (`username`),  KEY `index1` (`nickname`),  FULLTEXT KEY `intro` (`intro`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';

2、索引的删除

## 以下两句都是等价的,都是删除掉table_name中的索引index_name;DROP INDEX `index_name` ON `talbe_name`ALTER TABLE `table_name` DROP INDEX `index_name`## 删除主键索引,只能用这种方式删除ALTER TABLE `table_name` DROP PRIMARY KEY 

3、索引的查看

show index from tableName

4、索引的更改

不会真有人以为这里会有东西吧。。。

直接删了重新创建索引就好了。

最后看下创建索引的小技巧:

  1. 维度高的列创建索引,数据列中不重复值出现的个数,这个数量越高,维度就越高,如数据表中存在8行数据a,b ,c,d,a,b,c,d这个表的维度为4,要为维度高的列创建索引,如性别和年龄,那年龄的维度就高于性别,性别这样的列不适合创建索引,因为维度过低。

  2. 对 where,on,group by,order by 中出现的列使用索引。

  3. 对较小的数据列使用索引,这样会使索引文件更小,同时内存中也可以装载更多的索引键。

  4. 为较长的字符串使用前缀索引。

  5. 不要过多创建索引,除了增加额外的磁盘空间外,对于DML操作的速度影响很大,因为其每增删改一次就得从新建立索引。

  6. 使用组合索引,可以减少文件索引大小,在使用时速度要优于多个单列索引。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

  

Guess you like

Origin blog.csdn.net/luyaran/article/details/121120128