程序员MYSQL急救包——(能救命,能加薪)
如果你觉得对你有用,请留下一个赞再走,谢谢!!
文章目录
- 一、SQL语句查询模板
- 二、查看性能的语句
- 2.1 查看是否用上索引(必须会)
- 2.2 慢查询哪里看
- 2.3 连接数、索引sql
- 三、事务隔离性
- 四、优化SQL(千万级数据测试)
- 五、MYSQL经典50题(含答案)
- 六、分享交流
一、SQL语句查询模板
在实际开发中,读远远大于写,所以数据查询的模板格式必须掌握
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]...
FROM <表名或者视图名>[,<表名或者视图名>...]|(<SELECT语句>[AS]<别名>
[where<表达式>]
[GROUP BY<列名1>[HAVING<表达式>]
[ORDER BY<列名2>[ASC|DESC]]
LIMIT;
开发中常用sql语句:
- 随意获取一条数据(抽奖)
SELECT * FROM table_name ORDER BY RAND() LIMIT 1;
- 批量删除数据(管理端一键删除)
# 加个limit避免大量事务等待而删除失败,提高效率(批量更新也一样)
DELETE FROM table_name LIMIT num1
- 添加索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
- 一般的增删改查自行百度
- 持续更新中……
二、查看性能的语句
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 慢查询哪里看
查看当前数据库是否开启了慢查询日志功能
show variables like '%slow%'
分析:
a.slow_query_log
中ON
代表已开启慢查询日志
b.slow_query_log_file
代表日志的位置查看多少秒算慢查询
show variables like 'long_query_time'
分析:
a. 默认是10秒,这里为了测试设置成这样如何开启慢查询(配置文件在哪??,了解即可)
a. 登录mysql
客户端,输入如下命令
select @@basedir;
这是MySQL
安装位置b. 输入
select datadir;
MySQL
的配置文件就存放在此处
c.my.ini
中修改配置参数
通过慢查询的日志,定位
sql
说明: 这条语句被定位到的原因是上面将慢查询时间改的很短很短。
2.3 连接数、索引sql
- 查看连接数
show status like 'connections'
- 查看表索引
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(千万级数据测试)
- 索引失效的情况,在项目应用中能有替换方案就用替换方案
not exist, !=,not in ,
不会使用索引where
中用like
进行%xx%
或者%xx
模糊匹配where
条件中有or
,即使条件有索引,也用不上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业务难不到你的了。
还等什么!!撸起袖子开干吧!!!!
如何获取资源:
- 戳我->资源链接
- 关注公众号回复sql经典50题
六、分享交流
最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,公众号回复提取码即可获取以下学习资料啦啦啦啦,喜欢就拿去吧!!
(链接时常会失效,若出现此类情况,可以加我微信:17722328325(加时请备注:学习资料))
Java web从入门到精通电子书
Python机器学习电子书
Python400集(北京尚学堂)
JavaScript项目案例、经典面试题
Java300集(入门、精通)
Java后端培训机构录集(同事培训内部提供)
java重要知识pdf文档(价值连城呀呀,不收藏你会后悔的)
喜欢就关注吧,点个赞吧
程序员MYSQL急救包——(能救命,能加薪)相关推荐
- 过年了,程序员同学如何给老板提加薪?
还有不到一个月的时间就要过春节了!对大多数人而言,年终奖的确让人很期待.但是有一件事让很多程序员同学「耿耿于怀」,那就是如何开口给老板提加薪呢?一般而言,程序员都不善于和老板提这个问题,一是因为脸皮薄 ...
- 程序员该不该主动提加薪?
阅读文本大概需要3分钟. 程序员该不该主动提加薪这个问题应该很多程序员困惑,特别刚就业一两年的小伙伴,我觉得这个问题很有普遍性,应该是很多程序员普遍关注的问题,因此拿出来和大家一起聊聊. 在文章开始之 ...
- 程序员该不该主动提加薪?| 畅言
作者 | 纯洁的微笑 责编 | 胡巍巍 很早之前有一个网友,问笔者一个问题,我觉得这个问题很有普遍性,应该是很多程序员普遍关注的问题,因此拿出来和大家一起聊聊. 问题如下:最近一直在纠结怎么向上司提加 ...
- 如何把程序员从久坐颈椎病中拯救出来?我为程序员做了这个救命APP
Life++ 久坐救命教练 - (程序员版) 「Life++」- 你的久坐救命教练,在办公室随时随地对抗久坐带来的巨大伤害. 我们每个人都在"慢性自杀": - 上班8小时坐着,吃饭 ...
- 推荐 10 个 GitHub 上最火的程序员简历项目,少说加薪 3K 的简历技巧!
面试 大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 前言 猫哥是一个常年混迹在 GitHub 上的猫星人,所以发现了不少好的前端开源项目.常用技巧,在此分享给大家. 公众号:前端 ...
- 黑马程序员mysql答案_干货|MySQL常见问题及答案汇总
MySQL是一种开放源代码的关系型数据库管理系统.数据库按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 在学习MySQ ...
- 初级程序员Mysql最新安装步骤(安装,卸载,常见问题)
快速安装mysql mysql8.0下载地址 在这里插入图片描述 Login登录----Sign Up注册账户 在这里插入图片描述 我的电脑-->高级设置-->系统变量-->新建-- ...
- 黑马程序员---MYSQL数据库---01
一:数据库的特点: 1:持久化存储 2:读写速度极快 3:保证数据有效性. 数据库是来干啥的?? 存储和管理数据. 二:数据库的分类: 1:关系型数据库:MySQL ,SQL Server, Orac ...
- 想成为高级程序员MYSQL的那些知识你需要全懂
MySql常用命令 登录mysql mysql -u username -p 数据库授权 grant all privileges on *.* to iCache@'192.168.101.221' ...
最新文章
- eclipse/MyEclipse 日期格式、注释日期格式、时区问题
- mysql sqlserver schema_MySQL数据库数据迁移到SQLserver
- 微型计算机和接口技术考题,微型计算机接口技术以及应用考题
- Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by
- python 字符串%和format_Python必懂知识点,格式化字符串,到底用.format还是%
- 小马哥讲Spring核心编程思想 第十周 Spring资源管理
- 城市空气质量监测系统解决方案
- k620显卡linux驱动下载,K620k620驱动的安装方法和丽台k620显卡可以玩哪些游戏
- 怎么使用播放麦克风输入的音频呢
- Git入门——tortoisegit使用问题:git不显示图标?
- Ubuntu 修改只读文件
- 如何关闭机房迦卡他卡进程,让你轻松上网。
- 学计算机大学报什么专业好就业前景,学哪些专业就业前景好?附未来最吃香的十大专业...
- 项目开发相关(附 Git 使用)
- violate关键字的用法
- 用Python实现的Internet电话软件(P2P-SIP)开源
- 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
- “政务上链” 能否解决新数据孤岛、安全风险等问题
- 高通退出服务器芯片市场,华为会跟随退出么?
- 查出反向木马的反向连接域名
热门文章
- c++实现二叉排序树
- 金融市场基础知识-全书读书笔记汇总
- 微信小程序自定义导航栏组件(完美适配所有手机),可自定义实现任何你想要的功能
- 关于浏览器input输入框自带屎黄色样式的修改(个人笔记)
- Apache Tomcat 强化和安全指南
- IA-RED²:视觉变换器的可解释性冗余降低
- 每天学一点点英语——(ignorance)
- 情态动词---情态动词表推测的三种时态
- 女子能顶半边天,谷歌权势最大的15个女人
- linux看电影软件下载,LINUX总结第5篇:Cent os常用软件(看电影、听音乐、看pdf、看word等)...