随笔分类 - 数据库
摘要:背景:对于left jion使用不多, mysql left join中on后加条件判断和where中加条件的区别 详细的例子说明使用差异 【SQL】sql语句LEFT JOIN(拼接表)详解 讲解左右链接时候的差异 如何优化: 第一:能够进行程序拆分的情况就一定不要表链接过多 第二:遵从小表在前,
阅读全文
摘要:不知道你在实际运维过程中有没有碰到这样的情景:业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内、临时性地提升一些性能。 我以前做业务护航的时候,就偶尔会碰上这种场景。用户的开发负责人说,不管你用什么方案,让业务先跑起来再说。 但,如果是无损方案的话,肯定不需要等到这个时候才上场。今
阅读全文
摘要:20讲幻读是什么,幻读有什么问题 在上一篇文章最后,我给你留了一个关于加锁规则的问题。今天,我们就从这个问题说起吧。 为了便于说明问题,这一篇文章,我们就先使用一个小一点儿的表。建表和初始化语句如下(为了便于本期的例子说明,我把上篇文章中用到的表结构做了点儿修改): CREATE TABLE `t`
阅读全文
摘要:在MySQL中,有很多看上去逻辑相同,但性能却差异巨大的SQL语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。 我今天挑选了三个这样的案例和你分享。希望再遇到相似的问题时,你可以做到举一反三、快速解决问题。 案例一:条件字段函数操作 假设你现在维护了一个交易系统,其中交易记录表t
阅读全文
摘要:在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们前面举例用过的市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前1000个人的姓名、年龄。 假设这个表的部分定义是这样的: CREATE TABLE `t` ( `id` int(11) NO
阅读全文
摘要:12讲为什么我的MySQL会“抖”一下 平时的工作中,不知道你有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 看上去,这就像是数据库“抖”了一下。今天,我们就一起来看一看这是什么原因。
阅读全文
摘要:注:转自极客时间 丁奇 《Mysql 实战45讲》仅供自己揣摩 mysql的整体结构 01 一条sql的执行过程是什么 分为server层和存储引擎层server层包含:连接器:管理连接,权限验证查询缓存:命中则直接返回结果分析器:词法分析,语法分析优化器:执行计划生成,索引选择执行器:操作引擎,返
阅读全文
摘要:背景:关于数据库中的事务ACID以及隔离级别在面试笔试中经常被考。如果这种题再不会实在太可惜了。所以要深入总结 脏读和不可重复读的区别:脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。 不可重复读和幻读的区别:都是读取了另一条已经提交的事务(这点就脏读不同),
阅读全文
摘要:背景:总结mysql相关的知识点。 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件。 in查询就是先将子查询条件的记录全都查出来,假设结果集为B,共有m条记录,然后再将子查询条件的结果集分解成m个,再进行m次查询。 因为索引,in主要用到了外表的索引,
阅读全文
摘要:背景:总结mysql索引相关的知识点. MySQL 索引及查询优化总结 MySQL 索引及查询优化总结 ps:其中的b+树有误。对or的使用有误。总体还是很详尽的 注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就
阅读全文
摘要:背景:在面试过程中发现很多公司对sql查询有要求,虽然不高,但是简单常见的sql查询必须熟练的掌握,否则一面都无法通过,痛定思痛,必须要深入了解下!!! 注释符号 聚集索引和非聚集索引的区别? InnoDB 存储引擎支持以下几种常见的索引: B+树索引、全文索引、哈希索引 而 B+树索引最为常见,可
阅读全文
摘要:背景:将找工作过程中,数据库相关的知识在此总结,一定要静心筛选,方便以后查看。——20190303 平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了 https://zhuanlan.zhihu.com/p/27700617 平衡二叉树特点: (1)非叶子节点最多拥有两个子节点; (2)非
阅读全文
摘要:背景:好长时间不找工作了,这些基础性的东西都忘光了,看来找工作是个学习的好方式。 前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着
阅读全文
摘要:背景:之前一直分不清plsql和程序中配置文件url之间的连接,想当然的认为service_name 和jdburl后面的实例相对应,直到出错的这一天,通过这篇博客,彻底扫除了盲点。 1 问题 1.1 问题描述 plsql的tnsnames.org中的数据源是这么配置的 应用程序中的配置文件是这么配
阅读全文
摘要:背景:一次搞清sql查询中的通配符问题。 1 sql通配符 通配符主要以下几种:%、_、[]、[^] 。 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用,必须放在引号内。 在 SQL 中,可使用以下通配符: %:替代一个或多个字符。 _:
阅读全文
摘要:场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL 是一套最为专业的
阅读全文
摘要:1 熟悉union的相关操作 UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION的一个限制是两个SQL语句所产生的栏位需要是同样的资料种类。 另外,当我们用 UNIO
阅读全文
摘要:-- LIKE模糊查询用法 -- SQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下: -- 1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 -- 2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、S
阅读全文
摘要:场景:用来汇总工作中数据库的异常问题! 1 问题 序列在会话中未定义 解决: 创建Sequence后直接查询它的当前值(CURRVAL)会出错,要先调用Sequence对象.NEXTVAL,才能查询当前值。 程序中需要用到currval的地方应该首先调用一次nextval来避免出现会话未定义的情况。
阅读全文
摘要:场景:在生产过程中有时候需要不同的环境中修改表字段,使用sql语句比较方便! 1 演示 1.1 普通字段修改 增加字段: 增加字段注释: 修改字段: 删除字段: 1.2 主键字段修改 在原有表基础上增加主键的时候需要先删除原有字段,再重新设置主键约束。 1.3 删除表中的数据 truncate ta
阅读全文