首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL中10多张关联要做优化,怎么理解逻辑幂等

最近优化了一条MySQL的慢查询SQL,还是蛮有感触,小结一下。...那就是里面有一个明显全扫描的逻辑,也就意味着尽管这么多表关联,但是数据量也可以接受,在优化器解析时大部分逻辑是走了索引,优化好最后一个全扫描,整个问题就迎刃而解了。...整个SQL的逻辑是输出其中product的数据(字段prod_id,prod_name)和tag的数据(tag_url),其中表tag和tag_product)他们通过字段(tag_id)进行关联...,然后和外部的使用prod_id进行关联,为了体现出是left join(左连接),我把product的位置及往上放了放。...所以对于上面的逻辑,其实数据product和tag要联合输出数据,需要借助一个中间tag_product,那么tag_product应该是连接数据的纽带,一个相对比较合理的方式就是其实基于product

3.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【精选】跟着光,七MySQL数据库基础入门(第一

    MySQL数据库基础入门(第一MySQL概述) 引言 博主:命运之光 专栏:数据库 开头想说的话:MySQL数据库学习笔记记录,大家可以每天花一点时间看一下,博主亲自试了一下对巩固知识很有用处...System(DBMS) SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准,简称(SQL) 主流的关系型数据库管理系统 (1)Oracle (2)MySQL (3)Micrrosoft...:打开解压后的文件夹,双击运行【mysql-installer-community-8.0.13.0】 Step5:勾选后点击Next Step6:选Custom后点击Next...数据模型 关系型数据库(RDBMS) 概念:建立在关系模型基础上,由多张相互连接的二维组成的数据库。...特点: 使用储存数据,格式统一,便于维护 使用SQL语言操作,标准统一,使用方便 数据模型 结束语 宝子们学习到这就结束了,简单吧,关注光,让我们明天继续下一小节的学习

    10510

    MySQL传输空间小结(r12笔记第2)

    MySQL中如果要迁移一个导另外一个服务器/环境中,常规的做法就是使用备份工具备份,比如mysqldump,然后拷贝备份到目标服务器或者环境导入。...-源端操作 我们做一个有代表意义的测试,比如把某一个MySQL 5.6环境迁移到MySQL 5.7环境中。...:10 users.frm -rw-rw---- 1 mysql mysql 11534336 Mar 12 22:55 users.ibd 在flush table之后,这个users就被锁定了,...跨版本传输空间-目标端操作 目标端的操作非常关键,目标端是MySQL 5.7的环境。 首先需要在目标端创建相应的空。然后使用如下的语句把数据文件截断。...原因就是Innodb_file_format在5.6中是Antelope,在MySQL 5.7中是Barracuda,主要是在压缩和行的动态格式上有所改变。

    1K70

    MySQL—概述

    服务,启动或者停止 在命令行输入net start mysql80启动,输入net stop mysql80停止 三、客户端连接 使用MySQL提供的客户端命令行工具 打开之后会提示输入密码,就是安装时设置的密码...Files文件夹下) 到此,MySQL安装成功并可以使用了!...四、关系型数据库(RDBMS) 概念:建立在关系模型基础上,由多张相互连接的二维组成的数据库。 具体什么是二维呢,参见下图 通俗解释,两张表格,相互独立,又可以通过某些关系联系起来。...特点: 使用存储数据,格式统一,便于维护 使用SQL语言操作,标准统一,使用方便 五、数据模型 当我们安装了MySQL时,我们的计算机,便成为了MySQL数据库的服务器,我们使用客户端即可连接数据库管理系统...(DBMS),使用数据库管理系统可以创建数据库,也可以通过SQL语句来在指定的数据库中创建储存数据,我们可以创建多个数据库,一个数据库也可以创建多张

    49030

    MySQL修复的简单分析(r11笔记第19

    这是一个远程云主机环境,windows系统,运行着MySQL,在查询时出现了问题,而且开发同事经过了repair也没有修复,说会卡住没有响应。...他们用的是MyISAM,查看了其它所有的的存储引擎,发现清一色都是MyISAM.所以我就可以基本断定这个出问题的也是MyISAM 对于MyISAM修复,可以用myisamchk来做或者使用repair...当然如果尝试使用repair也是可行的,比如修复pre_common_member,输出如下: mysql> repair table pre_common_member; +------------...首先myisamchk和repair只能修复MyISAM,相比来说,myisamchk的输出信息要更详细一些,优化,分析的信息都会输出,repair则比较直接,repair无法修复InnoDB的,...时必须保证不能被使用,check/repair则可以在线操作。

    1.1K160

    MySQL无法创建的问题分析(r12笔记第73)

    0.13 sec) 这说明这个的限制和语法陷阱也没有关系,但是创建这个就这么纠结。...有的同学可能说有问题看看日志怎么说,mysql这一点上提供的信息极少,error log里面的信息只有一行报出的错误,其它更具体的信息就没有了。...后来开发同学做了进一步确认,把数据库中QRTZ字样的都删除(前提是有备份),因为这是一批次的变更,要么可用,要么回退,删除了这些之后,再次尝试创建刚刚失败的,这次竟然成功了。...这个问题怎么分析呢,mysql的query log记录了所有操作的过程,这给我带来很大的便利,这样我就能看到每一步执行的过程中的一个基本情况了。当时做了什么尝试,之前做过什么变更都一目了然。...在清理结构之前,我下意识做了一个基本的信息备份,这是清理之前的的情况。

    1.6K70

    MySQL - 分库分

    一.分库分原因 前文介绍MySQL主从模式,将读写分离提高性能。 主从模式对于写少读多的场景确实非常大的优势,但是总会写操作达到瓶颈的时候,导致性能提不上去。...垂直分 用户系统为例,将user按字段拆分为user_base 和 user_info,两个通过userid进行联系。...垂直拆分缺点 跨库关联查询 在单库未拆分之前,我们可以很方便使用 join 操作关联多张查询数据,但是经过分库分后两张可能都不在一个数据库中,如何使用 join 呢?...每月:可以起一个定时任务将前一的数据全部迁移到当月。 历史:同样可以用定时任务把时间超过 30 的数据迁移到 history。 水平拆分的特点 基于数据划分,结构相同,数据不同。...水平拆分缺点 数据扩容有难度,维护量大 例如上面会员库一分为二,根据userid % 2将数据分库或分储存储,但随着业务量快速提升,两个库已经不够用,需要分成更多,例如10个,那么分库分逻辑也会改成

    5.8K31

    使用外部关联MySQL数据到Oracle(r6笔记第100)

    因为业务需要,有个临时的活动需要DBA来支持一些数据业务,问题来了,需要从MySQL端同步一部分数据到Oracle端,然后从Oracle端匹配查 到相应的数据返回给MySQL,至于原因,也是不同的业务系统...下面这个图左边是Oracle的环境,右边是MySQL的环境,两个环境的中都存在一个共同的字段就是序列号serial_no,而且MySQL段的序列号是Oracle端的子集,两者是存在一一映射关系的。...,但是每次都去更新的数据还是有些繁琐,一个方便的办法就是外部了。...但是创建外部的时候老师抛错,最后发现uid是保留字,用下面的例子来验证。...关于保留字可以通过下面的方式来查询 SQL> select * from v$reserved_words where keyword='UID'; 外部加载了之后,关联的时候发现竟然没有匹配的数据,

    1.2K40

    MyCAT中的DDL

    开发同学的需求是对某一之后的日表添加字段,变更第一的数据需要对该字段添加默认值,之后的就不需要默认值了,这个从业务的角度来说,是因为应用层升级,需要这个属性,如果有些业务暂时还没有迁移过来,有一的时间来缓冲调整修复...177 | +-------------------------------------+ 1 row in set (0.00 sec) 按照16个分片来算,这个数量就相当大了,有2800多张...涉及的DDL有2个,即2个DDL语句,所以算下来就是5600多张了。...所以你看一张就能拆分成2000多张,一年有差不多5800张相关的。 如果在这个基础上考虑当天的结构变更,那就更复杂了。 我们来简单看下MyCAT里面的schema.xml配置。...app_sql/create_sql.sql是结构的定义文件。这个脚本的意义在于不断的处理结构信息,打上时间戳,写入另外一个脚本文件,按照日期循环100,就写入100次。

    1.1K30

    一文了解Mysql

    MyISAM:MyISAM不支持事务、外键,但是优势是访问速度快,不过由于级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者读为主的数据场景,并且场景需要对事务的完整性、并发性要求不高...Mysql中的锁 Mysql锁机制其实相对其他数据库更为简单,MyISAM存储引擎以及MEMORY存储引擎支持级锁,InnoDB存储引擎支持行级锁和级锁,但是默认情况下是采用行级锁,也就是我们常说的共享锁和互斥锁...第二范式:每个数据必须拥有主键,并且唯一标识整个数据。 第三范式:消除数据冗余,信息只在一个数据存储,不能存储在多张数据。然后通过外键进行关联。 blob和text的区别?...不同点 text大小写不敏感,而blob排序和比较大小写敏感的方式执行。 text是非二进制字符串,blob存储的是二进制数据。 text需要指定字符集,blob无需字符集校验。...blob可以储存图片, text只能储存纯文本文件。

    91520

    最通俗易懂的理解什么是数据库

    “知乎数据分析3实战训练营“除了数据分析,更是通过3的实战训练,让你接触真正的数据分析思维与方法:前 IBM 数据分析大咖 3 实战训练营打工人升职加薪必备立即解锁 2.数据库是如何存放数据的?...所以,简单来说:关系数据库=多张+各表之间的关系 对应的,学会关系数据库我们只要掌握两点就可以: 多张表里面,每一张的结构 各表之间的关系 我们接下来分别来看看这两个知识点。...2)各表之间的关系关系数据库是由多张组成的,图片里是存放在学校数据库里的4张。你能发现下面这4张之间有什么关系吗? 什么是关系呢?你是你爸爸的儿子,你是你的儿子的爸爸,这就是生活中的关系。...数据库用于存放数据,关系数据库=多张+各表之间的关系 2)关系数据库长什么样? 关系数据库中每个由一个名字标识。包含带有列名的列,和记录数据的行。...常用的关系数据库管理系统有mysql,orcale,sql server为了方便描述,我们后面说到数据库,都是指数据库管理系统。 5)什么是SQL?

    32220

    数据仓库之DWD层

    2.多个业务过程多张,随着业务发展,的数量明细资产太多不方便管理。所以就有了多事务事实。...这里在给出多事务在具体设计时的操作,传统的多事务可能会一个业务过程一条数据,只有当前发生的业务过程有相应数据,其他数据均置零。假如一一个实体有多个业务过程发生,我们应该有几条数据。...这其实就是累计快照事实的产生。将所有实例都只保存最新的状态。其实现方式可以拉链表的方式来实现,事务中历史最新数据作为初始数据,每天更新其中的数据。...(三)周期快照事实 事务事实主要储存的都是可累加行的度量。当需要一些状态度量时,比如账户余额、买卖家星级 、 商品库存、卖家累积交易额等,事务事实就不太适合。就需要周期快照事实。...周期快照事实产出方式1.对于可以通过对事务聚集的数据,从事务事实中汇总得到,但是这样可能逻辑比较复杂。2.无法聚集的数据,从操作系统中快照的方式同步下到ods层,再在进行加工。

    1.5K40

    【Java面试八股文宝典之MongoDB篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day18

    不敢苟同,相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100时间,基于Java岗面试中的高频面试题,每日3题的形式,带你过一遍热门面试题及恰如其分的解答...因此,不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法,希望这100能够让我们有质的飞越,一起冲进大厂!!,让我们一起学(juan)起来!!! ...效率高,数据格式不丰富) 对于数据量大而言,显然不能够使用关系型数据库进行存储,我们需要通过MongoDB进行存储 对于读多写少的应用,需要减少读取的成本 比如说,一条SQL语句,单张查询一定比多张查询要快...MongoDB的区别 MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是 非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。...一、关系型数据库-MySQL 1、在不同的引擎上有不同的存储方式。 2、查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

    43820

    不知道如何分库分,看完这篇文章,轻松应对工作面试

    面试官: 小伙子,看到你的简历上面写了项目中有对MySQL进行分库分,为什么要进行分库分?我: 不知道啊!谁知道老大咋想的,反正我来的时候就已经分好了。面试官: 嗯......这时候就需要用到MySQL终极优化方案 — 分库分。面试官: 不错,我该怎么判断项目是需要分库还是要分?是先分库还是先分?这谁能现场总结出来?别着急,等我看一眼一灯的八股文。我: 有了。...水平分,单数据量过大时,按照订单ID拆分到多张中。图片面试官: 小伙子,有点东西。都知道分库分好使,就没有什么缺点吗?我: 当然有,“所有命运馈赠的礼物,早已在暗中标好了价格。”...垂直分:本来一张能查出来的数据,现在需要多张join关联查询,这不瞎耽误事。水平分多张关联查询时,无法实现分页、排序功能。面试官: 分库分表带来这么多问题,你没有没考虑过相应的解决方案?...订单分片后,肯定不能使用数据库自增主键做订单ID,因为无法全局唯一,有什么好的解决办法?我: 又问到我手心里面,我前两刚看完一灯写的“雪花算法”,我现场手写订单ID的生成代码吧。

    63600

    【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day22

    不敢苟同,相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100时间,基于Java岗面试中的高频面试题,每日3题的形式,带你过一遍热门面试题及恰如其分的解答...因此,不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法,希望这100能够让我们有质的飞越,一起冲进大厂!!,让我们一起学(juan)起来!!! ...以上就是我的理解 explain执行计划 使用explain关键字可以模拟优化器来执行SQL查询语句,从而知道MySQL是如何处理我们的SQL语句的。分析出语句或是结构的性能瓶颈。...2、解决方案 第1种情况:索引失效或者没有没有索引的情况 首先,可以打开MySQL的慢查询日志,收集一段时间的慢查询日志内容,然后找出耗时最长的SQL语句,对这些SQL语句进行分析。...切分规则一般分为两种,一种是水平切分,一种是垂直切分。 水平切分的意思是把一张数据行数达到千万级别的大,按照业务主键切分为多张,这些小可能达到100张甚至1000张。

    36620

    带你学MySQL系列 | 多表连接查询的92语法和99语法,你都知道吗?

    前面两带着大家换了一个口味,带着大家学习了pyecharts的原理和部分图形制作。今天我们继续回归带你学MySQL系列,带着大家继续学习MySQL数据库。...今天这个文章全面总结了MySQL多表查询的几种情况,你知道MySQL的92语法和99语法吗?你知道等值连接和非等值连接吗?...在实际开发中,大多数的情况下都不是从单中查询数据,一般都是多张联合查询取出最终的结果。...也就是说:实际业务中也是一个业务由多个构成,不同的信息存储在不同的中,如果我们想要获取的信息来自多张,此时你就需要使用连接查询。...因此,我们在学习MySQL的过程中,没有必要既学习左连接又学习右连接。 左外连接(左连接):表示左边的这张是主表。 右外连接(右连接):表示右边的这张是主表。

    92920

    第10期:选择合适的空间

    一、系统空间 在 MySQL 数据目录下有一个名为 ibdata1 的文件,可以保存一张或者多张。...对多张的写入数据依然是顺序写,这就致使 MySQL 发布了单空间来解决这两个问题。 二、单空间 单空间不同于系统空间,每个空间和是一一对应的关系,每张都有自己的空间。...-----------------------------------------------------------+ 2 rows in set (10.26 sec) 重建期间抓取到的结果:如愿偿看到...比如:当多张被大量的增删改后,空间会有一定的膨胀;相比系统空间,打开需要的文件描述符增多,浪费更多的内存。...每个空间可以包含一张或者多张,也就是说通用空间和之间是一对多的关系。

    61810
    领券