MySqL索引

(1)索引的分类
  • 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
  • 唯一索引:索引列的值必须唯一,但允许有空值
  • 复合索引:即一个索引包含多个列
(2)索引的语法
  • 索引的创建
create index idx_city_name on city(city_name)
  • 查看索引
show index from city\G
  • 索引的删除
drop index idx_city_name on city(tableName)
  • ALTER命令
alter table tb_name add primary key(column_list)
该语句添加一个主键,意味着索引值必须是唯一的,且不能为null

alter table tb_name add uinque index_name(column_list)
该语句创建索引的值必须是唯一的(除了null外,null可能会出现多次)

alter table tb_name add index index_name(column_list)
添加普通索引,索引值可以出现多次

alter table tb_name add fulltext index_name(column_list)
该语句指定了索引为FULLTEXT,用于全文索引

MySql存储引擎

(1)存储引擎的概述

MySQL有一个存储引擎的概念,针对不同的存储需求可以选则最优的存储引擎

存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的

Oracle,SqlServer等数据只有一种存储引擎,Mysql提供了多种存储引擎,可以根据需要使用相应的引擎

MySQL支持的存储引擎包括 InnoDB ,BDB,MEMORY,MyISAM等,其中InnoDB和BDB提供事务安全表,其他是非事务安全表

可以通过下面语句查询当前数据库支持的存储引擎

show engines
(3)MySQL中常用存储引擎的特点
  • InnoDB
    MySQL默认的存储引擎,支持事务,行锁(适合高并发),支持外键(是MySQL的存储引擎中唯一支持外键)
  • MyISAM
    MySQL5.5前默认的存储引擎,不支持事务(访问速度比较快,用于对事务的完整性不做要求也可容忍数据的少量丢失),表锁,不支持外键
  • MEMORY
    该存储引擎将表的数据存放在内存中,每个MEMORY表实际对应一个磁盘文件,格式是.frm,该文件只存储表的结构,其数据文件都是存储在内存中,有利于数据的快速处理,MEMORY类型的表访问速度特别快,并且默认使用HASH索引,且服务一旦关闭,表中的数据就会丢失