mysql的存储引擎类型和索引类型

mysql的存储引擎,常用的有innodbmyisam

innodb支持外键,事务,行锁,安全性更高,写入快查询慢,适合大数据量

myisam查询快写入慢,支持全文索引,表锁(MyISAM同一个表上的读锁和写锁是互斥的,容易阻塞),

(myisam一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引)

(表锁是把整个表锁住,不能写,行锁只是锁住一行,这样安全性更高,,InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQLOracle不同,后者是通过在数据块中对相应数据行加锁来实现的)

还有heap 存在于内存的临时表


mysql的索引有

primary主键索引 唯一且不能为空

index索引 普通的(CREATE INDEX索引的名字 ON tablename (列名1,列名2,...);

unique唯一索引 不允许有重复(CREATE UNIQUE INDEX索引的名字 ON tablename (列的列表);

fulltext 全文索引 用于在一大串文本中进行搜索,(不支持中文分词,CREATE fulltext INDEX index_name ON table_name(colum_name);

复合索引 可在多个字段上建立索引,比如INDEX(A, B, C)可以当做A(A, B)的索引来使用,但不能当做BC(B, C)的索引来使用

 

举个例子来说,比如你在为某商场做一个会员卡的系统。

这个系统有一个会员表

有下列字段:

会员编号   INT

会员姓名   VARCHAR(10)

会员身份证号码   VARCHAR(18)

会员电话   VARCHAR(10)

会员住址   VARCHAR(50)

会员备注信息  TEXT

 

那么这个 会员编号,作为主键,使用 PRIMARY

会员姓名 如果要建索引的话,那么就是普通的 INDEX

会员身份证号码   如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)

会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。

 

不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。

用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以

你可能感兴趣的:(数据库)