暂无图片
mysql多表join为什么会选错驱动表
我来答
分享
czxin788
2023-11-10
mysql多表join为什么会选错驱动表

这是我在mysql 官网上的提问,但是没有解决问题。

https://bugs.mysql.com/bug.php?id=113035&thanks=4

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
张sir

我理解这个跟filtered机制有关系,你可以看下我这个文章,如果你建立一个(DataDate,EnterpriseID,PigFarmID) 应该可以正常选到了m0作为驱动表,或者收集表的直方图。

https://www.modb.pro/db/565859

暂无图片 评论
暂无图片 有用 0
打赏 0
机要员

在MySQL中使用多表JOIN时,选择驱动表(也称为连接表)是非常重要的。驱动表是用于发起连接的表,它决定了连接的顺序和方式。如果选择错误的驱动表,可能会导致查询结果不正确或者性能问题。

选择错误的驱动表通常是由于以下原因引起的:

  1. 不确定连接顺序:在多表JOIN中,连接的顺序很重要。如果连接顺序不正确,可能会导致查询结果不正确。因此,在选择驱动表时,需要确定正确的连接顺序。
  2. 连接条件不准确:多表JOIN是根据连接条件来将表中的行匹配起来的。如果选择的连接条件不准确,可能会导致查询结果不正确。因此,在选择驱动表时,需要仔细考虑连接条件是否准确。
  3. 驱动表选择不当:有时候,不同的表可能有不同的连接条件和关系。如果选择了一个不适合作为驱动表的表,可能会导致查询结果不正确或者性能问题。因此,在选择驱动表时,需要考虑表的特性和连接条件,选择最适合作为驱动表的表。
  4. 忽略连接条件:有时候,在多表JOIN中会忽略一些连接条件,导致查询结果不正确。例如,在连接两个表时,只考虑了一个共同的列,而忽略了其他连接条件。因此,在选择驱动表时,需要仔细考虑所有的连接条件,并确保它们都被正确地考虑进去。

为了避免选择错误的驱动表,可以采取以下措施:

  1. 确定正确的连接顺序:在多表JOIN中,确定正确的连接顺序是非常重要的。可以通过仔细分析查询语句和表的之间的关系来确定连接顺序。
  2. 仔细考虑连接条件:在选择驱动表时,需要仔细考虑连接条件是否准确。可以通过检查连接条件的可行性和正确性来确定合适的驱动表。
  3. 选择适合的驱动表:在选择驱动表时,需要考虑表的特性和连接条件,选择最适合作为驱动表的表。可以通过分析表的索引、数据量和关系来选择合适的驱动表。
  4. 考虑查询性能:在选择驱动表时,需要考虑查询的性能。可以通过评估不同查询方案的执行计划和性能来选择最优的查询方案。
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql proxy 选择 ProxySQL 还是 KingShard?
回答 1
已采纳
实测,proxysql在高并发时扛不住,会中断服务。如果只是想实现failover,还是搭建mgr或用MHA比较好。
从库跟主库的undo相差过大/从库的undo过大
回答 5
8.0.18版本
MySQL里面有堆锁吗?什么是堆锁?
回答 1
已采纳
堆锁是一种用于保护MySQL中的堆表(HeapTable)的锁机制。堆表是一种不具有索引的无序存储表,数据行的顺序在物理层面上是随机的。由于缺乏索引,堆表的访问方式和锁定方式与其他类型的表有所不同。堆
有个mycat下面有100个分片借点,假如现在我第100个节点宕机,那请问本来应该写入第100号节点的数据会怎样
回答 2
1.对于应用来说是丢失链接,因为应用的请求是通过mycat去分发的。应用只会认为,mysql无法连接,执行的事务失败。2.对于mysql来说突然宕机,对于宕机的服务器来说,内存的东西丢掉了,写入日志的
这个错误大概是什么原因?Could not execute Update_rows, Error_code: 1032; handler error HA_ERR_END_OF_FILE
回答 4
最好解析一下relaylog,看看这个事务都做了哪些操作。
mysql数据库find_in_set函数如何优化
回答 5
可以看下这篇文章,可以解决你的问题https://blog.csdn.net/StreetWalker/article/details/88573195
mysql服务无法启动了,怎么办?百度的方法无效
回答 2
重新安装了
shell编程与数据库事务交互的问题
回答 1
已采纳
那只能你shell中有设计成有的地方等待用户输入的模式比如plsql中就有&这样的等待输入
mysql使用命令导出数据库不带视图的语句是什么,需要加什么参数?
回答 1
已采纳
你是说用mysqldump吗?给你一个思路:先找出所有的表INFORMATIONSCHEMA.TABLES中记录着所有的表的类型(View是一种表)mysql>selectdistincttab
用xtrabackup备份mysql时,只能备份数据表吗?像存储过程、触发器、函数能备份下来吗?
回答 1
xtrabackup好像是按照用户、数据库名进行全量、增量等方式进行备份的;像表、存储过程、触发器等都包含在数据库中吧