linux mysql 字符集 索引,主键等

1.字符集mysql默认使用字符集 Latin1
* show variables like “%char%”; //查看默认字符编码
* set character_set_database=utf8; //临时修改字符编码
* vim /etc/my.cnf character_set_server=utf8 //永久修改字符编码
* alter table 表名 character set=utf8; //修改表的字符编码
* 现在默认使用utf8mb4格式,因为utf8有bug

2.索引
* 提高select的工作效率,只需要设置清楚即可,不需要后续认为操作
* 1)单列索引:普通索引,唯一性索引,主键,全文索引。
* 2)多列/组合索引。

3.普通索引
* index
* create table 表名 (字段 数据类型(),… 字段 数据类型()index 索引名字(字段【length】)); //创建表时添加索引
* 为某个字段添加索引,length为索引字段前缀,当索引字段数值过长可以设置
* show index from 表名\G; //查看索引
* alter table 表名 add index 索引名(字段); //为表添加索引
* create index 索引名 on 表名(字段); //为表添加索引
* drop index 索引名 on 表名; //删除索引
* 普通索引无限制,可以自由创建

4.唯一性索引
* unique 数据不允许出现重复
* create table 表名 (字段 数据类型(),…字段 数据类型()unique index 索引名(字段【length】));

5.主键
* 特殊的唯一性索引 primary key
* 主键字段不能重复且不可为空(可用于ID)
* 主键只能有一个,固不用像index一样命名
* alter table 表名 add primary key(字段); //添加主键
* create table 表名(字段 数据类型,…,primary key(字段)); //添加主键
* show index from 表名; //查看主键
* alter table 表名 drop primary key; // 删除主键

6.全文索引
* fulltext
* 主要用于字段数据类型为text和varchar,像小说网站简介什么的需要用

7.单列索引特点
* 加快查询速率
* 降低磁盘IO成本
* 加快表与表之间的连接

8.多列/组合索引假设 有a b两个字段,创建索引 where a=1 and b=1mysql查询时,只会使用1个索引,所以先查询a=1再查询b=1此时应该使用组合索引(a,b)9.最左前缀原则组合索引(a,b,c) a=1或a=1 and b=1 或 a=1 and b=1 and c=1a=1 b=1 c=110.索引失效原因
* 条件中有or
* 使用like加%,模糊查询时
* 全表扫描比使用索引查询更快时
* 索引是表达式的一部分
* 字段类型是字符串,数据没有加‘’

猜你喜欢

转载自blog.csdn.net/qq_39109226/article/details/110477624