1.索引的种类(六种)

  普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引

2.优缺点及注意事项

优点:有了索引,对于记录数量很多的表,可以提高查询速度。

缺点:索引是占用空间的,索引会影响update insert delete速度。

以下列出几点使用mysql索引的注意事项。

  a、索引要创建在where和join用到的字段上。

  b、以下操作符号可以应用索引(:<,<=,=,>,>=,BETWEEN,IN,LIKE不以%_开头)

   以下需要注意不使用索引(<>, NOT IN, LIKE %_开头)

    <> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替

  c、在使用max() min()时最好加上索引。

  d、单索引要创建在确实需要的地方。多列索引有最佳左前缀特性,所以尽量左边的字段是最常用的。

  e、索引不会包括有NULL值,就是有NULL索引就失效。

  f、使用短索引,一个字段字太多,可以建立部分索引,只取前十个字节约空间。

  g、不要在列上运算。例如:where MD5("password") = "myz"。

  h、explain select * from myz 来测试一下语句的效率...

3.存储引擎和索引存储类型

  索引存储类型包含两种:B树型索引和HASH型索引

  MyISAM和InnoDB存储引擎支持B树型索引;MEMORY支持HASH型索引和B树型索引,默认是前者。

4.索引的设计原则

  a.选择唯一性索引

  b.为经常需要排序,分组和联合操作的列建立索引

  c.为常需要作为查询条件的字段建立索引

  d.限制索引的数目

  e.尽量使用数据量少的字段作为索引

  f.尽量使用前缀作为索引

  g.删除不常用的或者很少用的索引

5.创建,修改索引的SQL语句

  

CREATE TABLE 表名(属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
......
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY[别名](属性名 [(长度)] [ASC|DESC])
);

实例

普通索引创建
CREATE TABLE index1(id INT,name VARCHAR(20),sex BOOLEAN,INDEX(id)); 普通索引修改
CREATE INDEX index1_id ON index1(id);

ALTER TABLE index1 ADD INDEX index1_id(id);
唯一性索引创建
CREATE TABLE index2(id INT UNIQUE,name VARCHAR(20),UNIQUE INDEX index2_id(id ASC)); 唯一性索引修改
CREATE UNIQUE index2_id ON index2(id);

ALTER TABLE index2 ADD UNIQUE INDEX index2_id(id);
全文索引创建
CREATE TABLE index3(id INT,info VARCHAR(20),FULLTEXT INDEX index3_info(info))ENGINE=MyISAM; 全文索引修改
CREATE FULLTEXT INDEX index3_info ON index3(info);

ALTER TABLE index3 ADD FULLTEXT INDEX index3_info(info);
单列索引创建
CREATE TABLE index4(id INT,subject VARCHAR(20),INDEX index4_st(subject(10))); 单列索引修改
CREATE INDEX index4_name ON index4(name);

ALTER TABLE index4 ADD INDEX index4_name(name);
多列索引创建
CREATE TABLE index5(id INT,name VARCHAR(20),sex CHAR(4),INDEX index5_ns(name,sex)); 多列索引修改
CREATE INDEX index5_ns ON index5(name,sex);

ALTER TABLE index5 ADD INDEX index_ns(name,sex);
空间索引创建
CREATE TABLE index6(id INT,space GEOMETRY NOT NULL,SPATIAL INDEX index_sp(space))ENGINE=MyISAM; 空间索引修改
CREATE SPATIAL INDEX index6_sp ON index6(space);

ALTER TABLE index6 ADD SPATIAL INDEX index6_sp(space);

6.删除索引

  DROP INDEX 索引名 ON 表名;

  

MySQL 索引 总结的更多相关文章

  1. 深入MySQL索引

    MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...

  2. MySQL 索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

  3. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  4. MySQL索引原理及慢查询优化

    原文:http://tech.meituan.com/mysql-index.html 一个慢查询引发的思考 select count(*) from task where status=2 and ...

  5. 【转】MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  6. [转]MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  7. MySQL索引类型总结和使用技巧以及注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...

  8. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  9. mysql索引总结----mysql 索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  10. Mysql 索引实现原理. 聚集索引, 非聚集索引

    Mysql索引实现: B-tree,B是balance,一般用于数据库的索引.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.而B+tree是B-tree的一个变种,My ...

随机推荐

  1. L2-012. 关于堆的判断

    L2-012. 关于堆的判断 题目链接:https://www.patest.cn/contests/gplt/L2-012 终于ac了,简直要哭.题目还是很简单的,不过很多坑: 1.寻找x下标时,有 ...

  2. LeetCode OJ 289. Game of Life

    According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...

  3. 非常简洁的js图片轮播

    <div id="tupian"></div><script>var jpg =new Array();jpg[0]="url(c.j ...

  4. javascript动画效果之多物体缓冲运动

    这个是通过一个for循环控制的三个li标签,被鼠标触发则会有一个宽度增加和减少的事件 html和css同样写在一起方便察看,这里就是简单的布局,重点在js <!DOCTYPE html> ...

  5. Time complexity of ArrayList in Java

    The size, isEmpty, get, set, iterator, and listIterator operations run in constant time. The add ope ...

  6. pumping lemma for finite regular language?

    some books describe pumping lemma as this: Let L be a regular language. Then there exists an integer ...

  7. Telnet服务器和域名系统的端口号 Mac OS X

    找到Telnet服务器和域名系统的端口号: lapommedeMacBook-Pro:~ lapomme$ grep telnet /etc/services telnet /udp # Telnet ...

  8. oracle 导入sql中文乱码(转)

    导入sql的有中文,直接在linux环境下进行复制粘贴的,发现进去的都是乱码, 修改如下: 进入oracle用户,#vi /home/oracle/.bash_profile; 在最后一行添加:exp ...

  9. socket通信实例

    ref: http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html http://blog.csdn.net/love_ga ...

  10. iOS 视图控制器生命周期

    1.init: 2.viewDidLoad: 3.viewWillAppear: 4.viewDidAppear: 5.viewWillDisappear; 6.viewDidDisappear