索引:对数据库来说,索引的作用就是给“数据”加目录
好处:
加快了查询速度(select)
坏处:
降低了增、删、改的速度(update/delete/insert)
增大了表的文件大小(索引文件甚至可能比数据文件还大)
案例:
设有新闻表15列,10列上有索引,共500w行数据,如何快速导入?
1、把空表的索引全部删除
2、导入数据
3、数据导入完毕后,集中建索引
索引的创建原则:
1、不过度索引
2、索引条件列(where后面最频繁的条件比较适宜索引)
3、索引散列值,过于集中的值不要索引
例如:给性别“男”,“女”加索引,意义不大
.frm 结构文件
.MYD 数据文件
.MYI 索引文件
普通索引 index
仅仅是加快查询速度。
唯一索引 unique index
行上的值不能重复
主键索引 primary key
主键不能重复,主键必唯一,但是唯一索引不一定是主键;
一张表上,只能有一个主键,但是可以用一个或多个唯一索引。
全文索引 fulltext index
查看一张表上所有索引
show index from 表名
建立索引
alter table 表名 add index/unique/fulltext [索引名](列名)
alter table member add index tel (tel);
alter table 表名 add primary key(列名)//不要加索引名,因为主键只有一个
删除索引
删除非主键索引:alter table 表名 drop index 索引名;
删除主键:alter table 表名 drop primary key;
关于全文索引的用法
Match(全文索引字段) against ('keyword')
关于全文索引的停止词
全文索引不针对非常频繁的词做索引。
如:this,is ,you,my等等。
全文索引:在mysql的默认情况下,对于中文意义不大。
因为英文有空格,标点符号来拆成单词,进而对单词进行索引。
而对于中文,没有空格来隔开单词,mysql无法识别每个中文词。
好处:
加快了查询速度(select)
坏处:
降低了增、删、改的速度(update/delete/insert)
增大了表的文件大小(索引文件甚至可能比数据文件还大)
案例:
设有新闻表15列,10列上有索引,共500w行数据,如何快速导入?
1、把空表的索引全部删除
2、导入数据
3、数据导入完毕后,集中建索引
索引的创建原则:
1、不过度索引
2、索引条件列(where后面最频繁的条件比较适宜索引)
3、索引散列值,过于集中的值不要索引
例如:给性别“男”,“女”加索引,意义不大
.frm 结构文件
.MYD 数据文件
.MYI 索引文件
普通索引 index
仅仅是加快查询速度。
唯一索引 unique index
行上的值不能重复
主键索引 primary key
主键不能重复,主键必唯一,但是唯一索引不一定是主键;
一张表上,只能有一个主键,但是可以用一个或多个唯一索引。
全文索引 fulltext index
查看一张表上所有索引
show index from 表名
建立索引
alter table 表名 add index/unique/fulltext [索引名](列名)
alter table member add index tel (tel);
alter table 表名 add primary key(列名)//不要加索引名,因为主键只有一个
删除索引
删除非主键索引:alter table 表名 drop index 索引名;
删除主键:alter table 表名 drop primary key;
关于全文索引的用法
Match(全文索引字段) against ('keyword')
关于全文索引的停止词
全文索引不针对非常频繁的词做索引。
如:this,is ,you,my等等。
全文索引:在mysql的默认情况下,对于中文意义不大。
因为英文有空格,标点符号来拆成单词,进而对单词进行索引。
而对于中文,没有空格来隔开单词,mysql无法识别每个中文词。