程序员MYSQL急救包——(能救命,能加薪)

如果你觉得对你有用,请留下一个赞再走,谢谢!!

一、SQL语句查询模板

在实际开发中,读远远大于写,所以数据查询的模板格式必须掌握

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]...
FROM <表名或者视图名>[,<表名或者视图名>...]|(<SELECT语句>[AS]<别名>
[where<表达式>]
[GROUP BY<列名1>[HAVING<表达式>]
[ORDER BY<列名2>[ASC|DESC]]
LIMIT;

开发中常用sql语句:

  1. 随意获取一条数据(抽奖)
SELECT * FROM table_name ORDER BY RAND() LIMIT 1;
  1. 批量删除数据(管理端一键删除)
# 加个limit避免大量事务等待而删除失败,提高效率(批量更新也一样)
DELETE FROM table_name LIMIT num1
  1. 添加索引
ALTER  TABLE  `table_name`  ADD  INDEX index_name (  `column`  )
  1. 一般的增删改查自行百度
  2. 持续更新中……

二、查看性能的语句

2.1 查看是否用上索引(必须会)

  • sql语句是否用上索引,用explain关键字
    explain select * from test
    在这里插入图片描述
    分析:

type:
常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL

  • ALL:全表扫描
  • index: 遍历索引树
  • range: 只检索给定范围的行,使用一个索引来选择行
  • ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
  • 性能上: ref > range > index > ALL

2.2 慢查询哪里看

  1. 查看当前数据库是否开启了慢查询日志功能
    show variables like '%slow%'
    在这里插入图片描述
    分析:
       a. slow_query_logON代表已开启慢查询日志
       b. slow_query_log_file代表日志的位置

  2. 查看多少秒算慢查询
    show variables like 'long_query_time'
    在这里插入图片描述
    分析:
       a. 默认是10秒,这里为了测试设置成这样

  3. 如何开启慢查询(配置文件在哪??,了解即可)
    a. 登录mysql客户端,输入如下命令
    select @@basedir;
    在这里插入图片描述
    这是MySQL安装位置

    b. 输入select datadir;
    在这里插入图片描述
    MySQL的配置文件就存放在此处
    c. my.ini中修改配置参数
    在这里插入图片描述

  4. 通过慢查询的日志,定位sql
    在这里插入图片描述
    说明: 这条语句被定位到的原因是上面将慢查询时间改的很短很短。

2.3 连接数、索引sql

  1. 查看连接数
    show status like 'connections'
    在这里插入图片描述
  2. 查看表索引
    show index from table_name(table_name用你自己的表名)
    在这里插入图片描述

三、事务隔离性

3.1 事务的隔离性:

  • 读未提交
    read uncommitted;
  • 读与提交
    read committed;
  • 可重复读(mysql默认的)
    repeatable read;

隔离性可用如下语句相应修改:

# 读未提交
set session transaction isolation level read uncommitted;
# 读已提交
set session transaction isolation level read committed;
# 可重复读
set session transaction isolation level repeatable read;

3.2 数据不一致性包括:

  • 丢失修改
  • 不可重复读
  • 读‘脏’数据

3.3 锁:

悲观锁乐观锁
理解在数据库层面上做并发控制应用系统层面上做并发控制
分类读锁、排它锁(写锁)x
语法写锁:for update, 读锁:lock in share mode;一般在数据库字段中添加版本号进行比对
实现者MYSQL数据库本身开发者自己
使用场景数据量大,多写操作时数据量小,多读操作时

四、优化SQL(千万级数据测试)

  • 索引失效的情况,在项目应用中能有替换方案就用替换方案
  1. not exist, !=,not in ,不会使用索引
  2. where中用like进行%xx%或者%xx模糊匹配
  3. where条件中有or,即使条件有索引,也用不上
  4. select * ……全表扫描,按需取出相应的列

真实数据操作:
先为name加上索引
alter table test add index indx_name('name')
在这里插入图片描述1. 用union代替in 、or

select name from test where name in('逆风','猪猪');
# 换成
select name from test where name = '逆风' union select name from test where name = '猪猪';

在这里插入图片描述
其它的自行可以去尝试……

五、MYSQL经典50题(含答案)

光说不练歪把子

如果你能把这50道经典题都自行完成了,那公司里的sql业务难不到你的了。

还等什么!!撸起袖子开干吧!!!!
如何获取资源:

  1. 戳我->资源链接
  2. 关注公众号回复sql经典50题

六、分享交流

最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,公众号回复提取码即可获取以下学习资料啦啦啦啦,喜欢就拿去吧!!

(链接时常会失效,若出现此类情况,可以加我微信:17722328325(加时请备注:学习资料))

  1. Java web从入门到精通电子书

  2. Python机器学习电子书

  3. Python400集(北京尚学堂)

  4. JavaScript项目案例、经典面试题

  5. Java300集(入门、精通)

  6. Java后端培训机构录集(同事培训内部提供)

  7. java重要知识pdf文档(价值连城呀呀,不收藏你会后悔的)



        喜欢就关注吧,点个赞吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值