问题标签 [mysql-dependent-subquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 如何防止 CASE WHEN x THE (子查询)中的依赖子查询
我有一个非常复杂的查询,它在 CASE 语句中使用了一些子查询。
对于这个问题,不需要完整的查询,只会阻止人们快速解决问题。
所以这篇文章使用伪代码来处理。如果需要,我可以发布查询,但它是一个怪物,对这个问题没有用。
我想要的是 CASE 语句中的可缓存子查询。
如上所述,这只是一个简化的伪代码。
MySql EXPLAIN 说 CASE 中所有使用的子查询都是依赖的,这意味着(如果我是正确的)它们需要每次都运行并且不会被缓存。
欢迎任何有助于加快此查询的解决方案。
编辑部分:现在真正的查询如下所示:
问题:这真的是更好的方法吗?如果我查看派生表可以包含多少行,我不确定。
也许有人可以帮助我更改@Ollie-Jones 提到的查询:
对不起,如果这听起来很懒惰,但我并不是一个真正的 mysqlguy,而且我多年来一直因为构建这个查询而感到头疼。:D
mysql - 为什么这个 MySQL 查询性能不佳(DEPENDENT_SUBQUERY)
当我尝试执行上述操作时(没有解释),MySQL 只是忙于使用 DEPENDENT SUBQUERY,这使得这变得非常缓慢。问题是优化器为客户端中的每个 id 计算子查询的原因。我什至将 IN 参数放在 group_concat 中,相信将结果作为纯“字符串”放置以避免扫描是相同的。
我认为这对于 5.5+ 的 MySQL 服务器不会有问题?MariaDb 中的测试也是如此。
这是一个已知的错误?我知道我可以将其重写为连接,但这仍然很糟糕。
mysql - MySql - 子查询无法正常工作
如果查询正确,BubQuery 总是返回空结果。
第一个查询:
结果:
第二个查询:
我正在尝试:
Sqlfiddle: http://sqlfiddle.com./#!9/d6515f/3 //这是一个示例表。
上面的查询总是返回空行。但是,如果每个查询单独运行,则每个查询都会返回结果。真的我不知道错误在哪里。请更新答案或建议我。
mysql - 带有 SELECT 子查询的 UPDATE 在 MySQL 5.7 上运行非常缓慢(但在 5.5 上运行良好)
谢谢大家。我在将数据库从 MySQL 5.5 升级到 5.7 时遇到了一个问题,这让我完全困惑。升级不是使用 mysqldump 或类似工具完成的,而是使用几个非常长的 SQL 脚本从几个制表符分隔的输入文件重建。特别是一个看似无害的查询(在存储过程中)一直给我带来麻烦,我不知道为什么:
这看起来相当简单,但是这个查询的 EXPLAIN 表明正在进行一些严重的行扫描:
重要的似乎是行列,对于 UPDATE 是 1198100,对于 SELECT 子查询是 1200537。这两个数字都非常接近两个引用表中的总行数(两者均为 1207744)。所以它似乎对两者的行扫描都进行了整行,我不明白为什么。完全相同的查询在 MySQL 5.5 中运行良好。我希望这个解决方案会有所帮助,但是将 'derived_merge=off' 传递给了 optimizer_switch 并且重新启动服务器并没有帮助。
我当然不希望这个查询超级快。它不一定是。之前的速度并不快(在 7200rpm 旋转磁盘上几分钟),但自从升级到 MySQL 5.7 之后,它似乎在宇宙热死之前的任何时候都不会完成,我宁愿不等长。有没有人有任何想法?无论是查询重写,还是 my.ini 设置或其他任何东西?
另外,如果我以任何方式违反协议或者我是否可以改进我的问题,请告诉我。正如我上面所说,这是我在这里的第一篇文章。
感谢您的时间。
编辑:我想了一会儿,这个解决方案看起来很有希望。显然,具有不同字符集/排序规则的表无法正确读取彼此的索引。我很确定一切都在latin1
,但认为值得确定。所以我明确地添加DEFAULT CHARSET=latin1
到我的所有CREATE TABLE
陈述中并添加CHARACTER SET latin1
到我的LOAD DATA INFILE
陈述中。可悲的是,没有改变。
sql - 在 SQL 中获取子查询错误
尝试使用我当前的表插入到某个表中。这是我当前 Temptable 的结构:
这是我正在执行的代码片段:
得到关注error
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的
我想从表中插入不同的假名temptable
,customer
确保假名已经存在,然后不要插入重复的假名
mysql - mysql 从表中检索和操作当前行和上一行
我看过几个地方,也许我只是没有正确地措辞搜索。我发现了类似的问题,但没有一个回答这个问题。
我有一张 Sight Inventories 表(用户在该表中走过存储区并实际检查手头有多少产品)。该表处理多个位置。表结构(部分,仅需要的信息)为:
它应该是以下形式的查询:
但我还没有让它工作。
我缺少的是整个子查询。我已经看到了几个我们得到上一个日期的答案,但是没有一个我可以真正从上一行中检索其余值的答案;它最终检索整个表中最新条目的值。
mysql - 带有子查询的 SQL 查询
我的数据是这样的:
...
现在我想获取数据具有子字符串_no_abc_ccc,但没有_abc_ccc 的字段。在上面的例子中,它的 data3
我正在尝试为它创建一个查询。粗略的是
mysql - 子查询减慢更新
这个查询引用了大约 3M 条记录,现在需要一个绝对时间才能运行。数据取自 Excel 电子表格,其中 Cust/Invoices 向下行,每月值 2016 到当前列。
此查询检查相同/不同产品在同一月份是否有值,如果可以忽略,则输出 1,如果后续查询应考虑,则输出 0。
我已经为产品设置了一个索引,它负责初始条件,但它是绝对杀死这个的子查询:
解释产生:
从视觉上看,它说这是一个完整的索引扫描,我假设红色背景表明这很糟糕。
任何想法我可以如何进一步优化。
mysql - Mysql子查询ID匹配外部查询
我有以下查询,我想子查询 id 与外部查询匹配,并选择与父查询返回的同一行的值。在这里,它在子查询中返回更多结果,我使用限制 1,但是这样我得到了错误的结果。
以下是样本数据
以下是样本数据。linkedid 相同表示相同的呼叫,因此需要显示在一条记录中,如果在任何未回答的行中回答,则处置已回答。
mysql - CASE..WHEN 中的所有子查询是否都被执行,即使只满足一个条件?
假设我在 CASE...WHEN...THEN 中有一个带有子查询的查询(简化,因为我正在处理的真正查询对眼睛来说有点困难):
所有 4 个子查询都是依赖子查询。
是否所有 4 个子查询都被执行?因为当我执行 EXPLAIN 时,所有子查询都包含在计划中。
还是只先执行 subquery1,如果满足该条件,将执行 subquery2?如果没有,将执行 subquery3 以检查是否满足条件,依此类推...当我将查询重写为存储过程以仅以这种方式执行唯一相关的子查询时,性能有所提高(时间减少)。我很想知道原始查询是否需要更多时间,因为它执行所有子查询,无论是否满足先前的条件。
我尝试打开通用日志,但子查询没有单独记录。它们作为整个查询一起记录,因此我无法确定实际执行了哪个子查询。还尝试查看 SUBQUERY 上的 MySQL 文档,但我还没有找到任何东西。