mysql sysdate() 慢_mysql笔记

这篇博客主要探讨了MySQL中的sysdate()函数使用及其可能导致的性能问题,并深入讲解了MySQL的索引原理和优化技巧。内容包括不同时间函数的用法,索引的类型如主键、唯一、复合索引,以及索引的优缺点和最左匹配原则。此外,还讨论了查询优化、慢查询日志和锁机制,如表锁、行锁和页锁的应用及注意事项。
摘要由CSDN通过智能技术生成

mysql基础部分

6449e997054c0eb2df4c3a247a3647b3.png

c218e33470f38e54172382f0d3346c5e.png

f971d9bcb608866bf1f410bd181773cc.png

1ca51e950ec9851066a0bd28e29df64a.png

8361f0da630df80ec0f26f4b06897dcd.png

64706d063083b25233aef4cb75a8813f.png

4a03a3ef080bbb912e761369d34fbff4.png

9b893c3812a734d9315d9f23e5508a8e.png

中间补充

mysql获取系统时间

1.获取单个年月日

2.获取当前时间,格式为YYYY-MM-DD HH:mm:ss

3.获取当前年月日

4.获取时分秒

5、获取当前时间的秒数

格林尼治时间为:1970-01-01 00:00:00,此时位为东八区的北京时间为:1970-01-01 08:00:00

6.获取指定时间的秒数

7.获取指定秒数的时间

8.获取两时间之间制订单位的时长

445e28f6df9f83a04002df8a53b0fce0.png

17780da2a92f28bd94b68c418003f76e.png

e11d4d9afd23f4523b27bc10d3f6973d.png

等值连接与自然连接

外连接:

bb6d4eaa077dfd0a4ef23418bfa830d4.png

d78efea8e45f2f88d93f4d62538bf385.png

07aadb1f2ff096a2a9b21351cbb434d3.png

d3c72f5fa13e82d430410fc592b53add.png

5c4619f1df5ee1d05349f617a2b0ed33.png

08d090a40d24117c7a4990d32c185e0b.png

fa73205ae87d24f1000f4753af61452f.png

48f5f836167fff58fa55b496e3d67feb.png

381a12ecc85ef61fd151f62b7106345f.png

e67e5633099d9ad375617145bec87b7b.png

611e068fe4cdcab46219cff71824ac65.png

725a5ddcd86da50db2773f726a17b0fb.png

76ea870bcab0952d55376da18c351d9d.png

5fd6231cbc0bce40dc185ffa6b1a2dee.png

04b9e002a3d0ace0512021628a1f5bcc.png

176fdd0145afa02ac7ab816b8eb148ae.png

0febbb47a186984ea641b7b32bcfee44.png

Mysql高级

1.概念:MySQL官方对索引的定义为:索引(Index)是帮助MySQL高校获取数据的数据结构。

可以得到索引的本质:索引是数据结构 底层是B+树

7e296fc207315cfa603629088dfd2c33.png

2.优缺点:

3.索引分类

1.主键索引(聚集)

2.普通(单列索引、单值索引)索引

3.唯一索引

4.复合索引

聚集(clustered)索引与非聚集索引

聚集索引

c2db93fecebb48ace728caf125ac8496.png

注:第一列的地址表示该行数据在磁盘中的物理地址,后面三列才是我们SQL里面用的表里的列,其中id是主键,建立了聚集索引。

ps:基本语法

非聚集索引

非聚集索引的二次查询问题

非聚集索引叶节点仍然是索引节点,只是有一个指针指向对应的数据块,此如果使用非聚集索引查询,而查询列中包含了其他该索引没有覆盖的列,那么他还要进行第二次的查询,查询节点上对应的数据行的数据。

如有以下表t1:

bdabc5588a4478d5ed58969c7090f1b5.png

以及聚集索引clustered index(id), 非聚集索引index(username)。

使用以下语句进行查询,不需要进行二次查询,直接就可以从非聚集索引的节点里面就可以获取到查询列的数据。

但是使用以下语句进行查询,就需要二次的查询去获取原数据行的score:

如何解决非聚集索引的二次查询问题

复合索引(覆盖索引)

建立两列以上的索引,即可查询复合索引里的列的数据而不需要进行回表二次查询,如index(col1, col2),执行下面的语句:

要注意使用复合索引需要满足最左侧索引的原则,也就是查询的时候如果where条件里面没有最左边的一到多列,索引就不会起作用。

总结与使用心得

4.最左原则(针对复合索引)

1.简单说下什么是最左匹配原则

2.最左匹配原则的原理

7124ef8c474d8a0e6944ef5bb20c5419.png

5.索引使用场景

适合建索引:

并不需要索引:

6.索引优化

EXPLAIN关键字

可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈

语法:EXPLAIN+sql语句

字段包含信息

46290e2fee78a3d030f9fd9717f81565.png

id:

select_type:

分类

3f63aa498f04d8ee381cea12bbd61396.png

table:

显示这一行的数据是关于哪张表的

type:

分类

22df9b3e5098ed6c8135d65f73900835.png

possible_key:

key:

key_len:

ref:

rows:

Extra:

索引分析

单表 多表 连接查询 要把索引建立在相反的一边 比如 left join 就把索引建立在右表中

b7910605dc95ccf5e78a08f4f9ed0bbc.png

索引失效

c13016e7eda0afcd9c6d3dff0c420f70.png

上面倒数第四个是以常量开头,索引用到了b索引,但是type 是range

上面倒数第三、第二以%开头 无法确定 索引直接没被使用 只使用了a索引 所以type显示ref

2e257ac17b0fbc27cfe6477bed8226d8.png

注意:

建议:

7.查询优化

8366c4b128f7646512d76bf7723cd457.png

小表驱动大表

028af2bf4fcc6107ba3b8b03ddc065ef.png

Order by 分析:

e66f8fbe5251fa2995fbab94f39c497f.png

ba22ea9d5d7c09274213a55817ea201c.png

8.慢查询日志

94c9914eb1e443dc433b32c872f7e759.png

8f50433b26539e08ee39ba9bbe3c5bf7.png

deff921b66b862199540db0b4b91aec9.png

06a887cedf05b763935422e1786cbb19.png

d5643ee46c54ecb6f56e0419213f3201.png

1cbf43c733ca28f2f8b0f61236037fa0.png

e4bc3008f5a6ebca7a1e9a99e6aba094.png

9.show profiles

c7e03fb4090182149e74970b0203fec2.png

53f7a9ae47ce9eee59c519bda5f3e075.png

93abec09eccda32e3f05999e0a146c2f.png

911429447c207c0d937fdc1b9ea9990b.png

mysql锁

6b1a5109a3b8ce069e874b02665712a9.png

1.表锁

特点:

26ad007b62a165de066db0a6b4e6c66b.png

读锁:

4a12e67177cf5f0813b7e99387568715.png

11f5e3182f12930791ef75b017bb445b.png

写锁:

659aae533ddad27f364b169dc4a35b18.png

结论:

526717b756cfbace1822d388f1f4c0d4.png

表锁分析:

d098631463e0d913640eac81f3bd6d3e.png

2.行锁

更新丢失:

a9690354419552519eea7abdbf19d29d.png

脏读:

c5ef7d08791860bef6ba41b4e90c8918.png

不可重复读:

0ca8d9eaf5a9dbeddd1a688fc4734953.png

幻读:

c5aa68a83e062ba2b40de079a4f87dc9.png

事务隔离级别:

e9c93da6b500ef2a467fd8490c4ef48d.png

演示:

c2faf7f10db0effb54a574b515c12d12.png

3e9b06d88a20768dcad989d407166ea3.png

无索引行锁升级为表锁:varchar 不用 ' ' 导致系统自动转换类型, 行锁变表锁

间隙锁:

eddb4ad83d86d9e48019901e0fb73c2b.png

常见面试题:如何锁定一行:

89c8cf8bc08389608b4b9b9b41815900.png

结论:

08bdf045eef5146d76f978a550638956.png

行锁分析:

1844bd15a98306ed3453034739026e42.png

优化建议

2759b709151e4340c06c063d6380ef6e.png

3.页锁

210c68f0192a4034aeea1acb045f6d9b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值