mysql 进阶到高级_Mysql 高级进阶

本文深入探讨MySQL中的各种索引类型及其应用技巧,包括普通索引、唯一索引、联合索引等,并讨论了如何有效创建和使用这些索引来提高数据库查询性能。此外,还介绍了事务的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql-高级进阶

Mysql-索引

索引类型作用

普通索引加速查找

主键索引加速查找+唯一+不能为空

唯一索引加速查找+唯一

联合索引联合主键+联合唯一+联合普通

概览

说明:直接创佳索引会创建额外的临时文件,以某种文件存储,每次查询的时候都会先查这个表

索引种类:Hash索引,btree索引,覆盖索引

hash索引:单值快,范围查找慢

btree索引

创建和删除索引

覆盖索引

索引合并:

1.给表中的id 和 email 创建一个索引

create index on table1(id);

create index on table1(email);

2.在索引文件中查询

select * from table1 where id=1 and email = "12@12"

这个过程叫做索引合并,非真实索引

效率:组合索引>索引合并

创建索引方式

#普通索引:

CREATE INDEX index_name ON table(column(length))

drop index 索引名称 on table

#唯一索引:

create uniqu index 索引名称 on 表名(列名)

drop unique index 索引名称 on 表名

#组合索引

create unique index 索引名称 on table 表名(列名1,列名2)

drop unique index 索引名称 on 表名

!!!注意:有最左前缀匹配,列名1和列名2的查询不能颠倒顺序

create unique index 索引名称 on table 表名(name,age)

#下面查询索引会失效

select * from table1 where age=12 and name="jhon"

索引失效

1.避免使用like,or,!= , 大于号:> ,order by

2.避免使用函数,如反转函数

3.必须数据类型一致

4.组合索引不按前缀规则查询

5.用count(列)代替count(*)

6.使用join 代替 (Sub-Queries)

7.重复值较少,不适合做索引,如性别

8.尽量用char代替varchar

char 和varchar的区别

1.char的长度不可变,varchar的长度可变

2.定义char[10],varchar[10],存进'abcd',char的长度为abcd+6个空格;varchar长度为4

3.char的存取速度比varchar要快,varchar比char省空间

4.(1)char对ASCII占用1个字节,汉字占用两个字节;

(2)varchar对ASCII和汉字占用2个字节,两者的存储数据都非unicode的字符数据

Mysql-事务

Mysql-原理

网页https://www.jianshu.com/p/57ecc074af32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值