索引是存放在模式中的一个数据库对象,虽然索引总是从属于数据表,但它也和数据表一样属于数据库对象。创建索引的唯一作用就是加速对表的查询,索引通过使用快速路径访问方法来快速定位数据,从而减少了磁盘的I/O。

MySQL使用information_schema数据库里的STATISTICS来保存该数据库实例中的所有索引信息,用户可通过查询该表来获取该数据库的索引信息。

创建索引有两种方式:

1.自动:当表上的定义主键约束,外键约束和唯一键约束的时候,系统会自动创建该数据列的索引。

2.手动:用户可以通过create index...语句来创建索引。

索引的作用类似于书的目录,几乎没有一本书没有目录,因此几乎没有一个表没有索引。一个表中可以有多个索引列,每个索引列都用于加速该列的查询速度。

创建索引的语法:

create index index_name on table_name(column[,column]...);

下面的索引将会提高对employee表基于last_name字段的查询

create index emp_last_name_idx on employee(last_name);

也可同时对多列建立索引,

create index emp_last_name_idx2 on employee(first_name,last_name);

MySQL删除索引需要指定表:

drop index 索引名 on 表名

如下SQL语句删除了employee表上的emp_last_name_idx2索引

drop index emp_last_name_idx2 on employee

有些数据库删除索引时无需指定表名,因为他们要求建立索引时,每个索引都要有自己的名字,所以无需指定表名,列如Oracle就采用这种策略。但MySQL只要求同一个表内的索引不能同名,所以删除索引时必须指定表名。

索引有好处,当然也有坏处,索引的缺点:

1.与书的目录类似,当数据表中的记录被添加、删除、修改时,数据库需要维护索引,因此有一定的开销。

2.存储索引信息需要一定的磁盘空间。

最新文章

  1. web api添加拦截器
  2. MFC 屏幕截图方法
  3. C#字符串的四舍五入
  4. [QCon] Scrum阅读随想
  5. Struts2之Action
  6. MySQL常用SQL语句
  7. NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
  8. floor() 和 ceil()函数
  9. android studio 开发android app 真机调试
  10. Canal 同步异常分析:Could not find first log file name in binary log index file
  11. python爬虫循环导入MySql数据库
  12. python多目录字符串查找匹配
  13. MySQL数据转移至SQL Server详解
  14. Skeleton Screen -- 骨架屏--应用
  15. 【C++】static关键字的总结
  16. hadoop distcp 命令& 不同hadoop 版本cp
  17. Latex中如何设置字体颜色(3种方式)
  18. springcloud中概念辨析
  19. selenium+python自动化94-行为事件(ActionChains)源码详解
  20. UltraEdit-32 查看编码

热门文章

  1. Log4net PatternLayout 参数
  2. Multiple Instance .NET Windows Service
  3. 【Python】使用torrentParser1.02对单文件torrent的分析结果
  4. powerdesigner 不显示表字段只显示表名
  5. 【转】ionic2 返回按钮
  6. Unity3d for beginners
  7. (转)pip和easy_install使用方式
  8. GCC中的内嵌汇编语言
  9. JAVA连接Mysql事例
  10. Communication API