浅述Oracle和Mysql两种库分别在join时大表的归宿

这篇具有很好参考价值的文章主要介绍了浅述Oracle和Mysql两种库分别在join时大表的归宿。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

浅述Oracle和Mysql两种库分别在join时大表的归宿

突然想起这么一个问题,Oracle 和 Mysql 在各自关联大表的时候,要想性能高点,大表放的位置是不是一样的,针对这个问题,我查找了一些资料,并确定的该问题的结果。


在Oracle和MySQL中,对于JOIN语句,将大表放在JOIN语句的左侧或右侧都可以,但是 由于查询优化器的不同实现,有时候会对查询性能造成影响。

1.在Oracle中,查询优化器的实现方式会根据STATISTICS_LEVEL的设置以及所用的具体版本进行不同的选择。在默认情况下,Oracle的查询优化器会优先使用COST-based优化器,进行基于逻辑读取次数和CPU资源消耗等因素的计算,然后再根据成本来选择执行计划。

因此,在Oracle中,如果LEFT JOIN或INNER JOIN语句中有一张表比其他表的数据量大很多,一些优化器会建议将它放在JOIN操作的末端。
但是,如果该大表包含了WHERE语句的查询条件,那么将该表放在JOIN操作的末端也未必是最优的,因为在WHERE语句执行时,需要先扫描该表来获取符合条件的行集合,然后再参与后面的JOIN操作。在这种情况下,将大表放在JOIN操作的开头可能更高效。

2.在MySQL中,查询优化器会针对每个JOIN操作进行优化,生成对应的执行计划。通常情况下,将大表放在JOIN语句的末尾更好,因为MySQL的查询优化器会优先使用基于索引的优化器,而对于大表,索引可能不太有效。因此,将大表放在JOIN语句的末尾,会使MySQL可以先执行小表上的JOIN操作,减少JOIN的数据量,达到更高的效率。

总的来说,无论是Oracle还是MySQL,建议根据实际情况,对SQL语句进行测试和性能优化,以确定最佳的表顺序。文章来源地址https://www.toymoban.com/news/detail-444567.html

到了这里,关于浅述Oracle和Mysql两种库分别在join时大表的归宿的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用NineData实现亿级别MySQL大表迁移

    MySQL 作为当前应用最广泛的开源关系型数据库之一,具有高性能、稳定性和易用性等特性,是许多网站、应用和商业产品的主要数据存储。在一些场景中,如果出现单表行数上亿的情况,就可能需要开发和 DBA 对大表进行优化:分表、归档或扩容操作,而在这些操作中都涉及

    2024年02月12日
    浏览(32)
  • 数据量超过亿级别,MySQL大表迁移该如何做?

    MySQL 作为当前应用最广泛的开源关系型数据库之一,具有高性能、稳定性和易用性等特性,是许多网站、应用和商业产品的主要数据存储。在一些场景中,如果出现单表行数上亿的情况,就可能需要开发和 DBA 对大表进行优化:分表、归档或扩容操作,而在这些操作中都涉及

    2024年02月11日
    浏览(32)
  • MySQL大表优化方案(应该是最完整最全的了)

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在 千万级 以下,字符串为主的表在 五百万 以

    2024年04月28日
    浏览(22)
  • 面试官:Mysql千万级大表如何进行深度分页优化?

    假如有一张千万级的订单表,这张表没有采用分区分表,也没有使用ES等技术,分页查询进行到一定深度分页之后(比如1000万行后)查询比较缓慢,我们该如何进行优化? 订单表结构如下: 其中 Mysql 版本为8.0。我们使用Python脚本向表中插入2000万条数据。 导出数据时我们需

    2024年02月19日
    浏览(35)
  • shell和Python 两种方法分别画 iostat的监控图

    在服务器存储的测试中,经常需要看performance的性能曲线,这样最能直接观察HDD或者SSD的性能曲线。 如下这是一个针对HDD跑Fio读写的iostat监控log,下面介绍一下分别用shell 和Python3 写画iostat图的方法 1 shell脚本 环境:linux OS gnuplot工具 第一步 :解析iostat log。提取要作图的一行 第二

    2024年02月12日
    浏览(30)
  • LightDB - oracle_fdw join下推增强【24.1】

    在之前的版本中 oracle_fdw 支持对join 进行下推,但有如下的限制: 只支持两表join的下推,不支持3表及以上的下推 连接条件和where 条件可以下推 如果连接被下推, order by 不会被下推 没有连接条件的cross join 不会被下推 只有select 语句支持连接下推 表必须在同一外部服务器上

    2024年01月25日
    浏览(36)
  • NineData支持制定安全、可靠的SQL开发规范_mysql大表风险治理举措

    生产环境规范-结构 INNODB表的主键(聚簇索引)保存了索引和数据行,并且二级索引的叶子节点也保存了主键值。如果没有定义主键,则会优先使用非空唯一索引来代替,如果没有唯一索引,则会使用内部隐藏的主键。所以新增表j建议有主键。 随着业务的快速发展,数据表存

    2024年04月16日
    浏览(29)
  • Oracle中LEFT JOIN后AND与WHERE的异同

    1、AND 过滤之后再连接 2、WHERE 连接之后再过滤 (1)、建表及插入测试数据 (2)、on后面and 条件表示先过滤之后,再连接 以下两种写法,所得的结果相同: (3)、on后面where条件表示先关联之后,再过滤   (4)、全值的情况   (5)、说明: 用到此类连接的情况,多为事实表为主表,维

    2024年02月10日
    浏览(32)
  • NineData支持制定安全、可靠的SQL开发规范_mysql大表风险治理举措(1)

    在MySQL 8.0中,默认已经不包含任何MyISAM表,所以在创建表的时,可以限制表的引擎,在高并发和高性能的场景下,推荐使用INNODB(支持事务、行锁),并且也需要设置各个列和表的备注,保证表的可读性。 线上数据库常常面临着持续的、不断变化的表结构修改(DDL),如增加

    2024年04月12日
    浏览(36)
  • 【用Percona Toolkit给mysql大表在不锁表的情况下建索引】

    共分为两步骤: 配置仓库 安装文档1 安装 安装文档2 由于mysql8默认使用的是caching_sha2_password,认证方式,而Percona Toolkit在centos7中使用的perl-dbd-mysql版本目前是4.023,暂时不支持这种认证方式,因此需要在mysql中新建一个以mysql_native_password认证的用户 建立索引 根据提示输入密码

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包