mysql主键和唯一索引的区别

主键约束唯一性,唯一索引提高查找效率。
项目:电商订单系统,2 02 0年上线。

一张表只能主键一个,唯一索引可多。
案例:用户表,主键一个,唯一手机号索引三个。

主键自动唯一,唯一索引可选null。
时间:2 02 1 年,产品迭代,添加用户邮箱唯一索引。

主键可关联外键,唯一索引不行。
具体项目:库存管理系统,2 02 2 年实施,主键关联订单表。

总结:主键硬约束,唯一索引软约束。
你自己掂量。

MySQL索引怎么用?秒懂只需四个点!

索引就是数据库的加速器,用好了能快一大截。

建索引很简单,用CREATE INDEX就行。
比如员工表按姓氏建索引: CREATE INDEX idx_lastname ON employees(last_name);
查询用索引的例子: sql -
用索引的 SELECT FROM employees WHERE last_name = 'Smith';
不用索引的例子: sql -
可能扫全表 SELECT FROM employees WHERE first_name LIKE '%John%';
索引分几种:
普通索引:随便用
唯一索引:值必须不一样
主键索引:自带唯一索引
复合索引:多列组合用,但要懂最左前缀原则
全文索引:专门搜文本的
索引的好处:
查数据快
JOIN连接快
排序快
保证唯一性
但索引也有坏处:
建索引要占空间
写数据会变慢
维护麻烦
怎么用好索引:
只建必要的索引
复合索引列顺序要反着来(常用字段放后面)
用EXPLAIN看索引是否被用
索引的坑:
LIKE '%keyword%'不能用索引
范围查询(>、<)只能用一边
列上用函数会失效索引
存储引擎也影响索引:
InnoDB支持聚簇索引
MyISAM不支持
维护索引:
用OPTIMIZE TABLE整理碎片
定期删不用索引
你自己看,索引这玩意儿,用对了就是神,用不好就是累赘。