问题标签 [lateral-join]
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.
sql - 如何使用子查询优化 sql 查询,也许是通过横向连接?
我正在尝试优化复杂的 sql 查询,它将在每次地图绑定框更改时执行。我以为那INNER LATERAL JOIN
会是最快的,但事实并非如此。有谁知道如何加快这个查询以及如何更好地利用LATERAL JOIN
?
我做的最快的查询:
计划时间:~0.605 ms 执行时间:~37.232 ms
实际上与上面相同,但使用LATERAL JOIN
,它更慢是正确的吗?
计划时间:~1.353 ms 执行时间:~38.518 ms
子查询中子查询最慢的查询(这是我的第一个,所以我对其进行了一些改进):
计划时间:~1.017 ms 执行时间:~41.288 ms
mariadb - MariaDB GROUP_CONCAT 横向派生
我有两个 MariaDB 实例在两台不同的机器上运行 1. iMac(2012 年末,32GB)OSX 10.13.3(High-Sierra) 2. 全新的 Intel-Server with 4 cores (VMWare) 64GB Exclusive Database-Server
在两台机器上都安装了 MariaDB 10.3.4(MariaDB 10.3 的最新测试版)
我创建了两个视图,而第二个使用第一个,如下所示。
第一视角
第二视图
当我在我的 6 岁 iMac 上运行第二个视图时,MariaDB 的缓冲池大小最大为 5GB,查询需要 200 毫秒来处理 200 行。
在具有 32GB 缓冲池大小的全新英特尔服务器上,相同的查询需要 6 到 10 秒。
两台机器上的数据库在索引、约束和所有其他方面都是完全相同的。唯一明显的区别是使用 EXPLAIN 完成的查询的结果
iMac:在此处输入图像描述 英特尔服务器:在此处输入图像描述 什么可能导致具有相同版本的两个 MariaDB 实例出现如此不同的行为? 在此处输入图像描述
这里的第一个 EXPLAIN SELECT 再次如图
postgresql - PostgreSQL:通过横向连接相关的值的总和
我正在尝试清理 PostgreSQL 表中的数据,其中一些记录在email_address
(由于已修复的错误导致的挫败感,有问题的记录是由激动的用户输入的):
所需的查询输出
我想构建一个查询,用亵渎分数注释数据表中的每一行,并按分数对记录进行排序,以便人类可以浏览带注释的数据(在网络应用程序中呈现)并采取必要的行动:
尝试#1
我正在采用的方法是建立一个正则表达式列表(现在我有 2 个问题......)和分数,如果在 email_address 列中找到该词,那么非常亵渎的词将贡献很大的亵渎分数。我的profanities
桌子看起来像这样:
横向连接
我发现我可以在函数上使用LATERAL
连接regexp_matches
来从每个函数中提取所有脏话email_address
(但没有脏话的记录会被丢弃):
这会产生以下结果:
子选择
我还想出了如何使用以下 SQL 获取每条记录的亵渎分数小计数组:
正确地产生所有行(包括没有亵渎的行),如下所示:
问题
如何对横向连接的结果求和以获得所需的输出?
我可以使用另一种策略来获得所需的结果吗?
mysql - 在 MySQL 中选择来自同一子查询的结果的联合
假设我有一个看起来像这样的查询:
这工作正常。现在,假设我想将这些结果与 and 的反向联合a
,b
即:
这也很好用。但请注意,select id from tbl1
子查询是重复的。
我的问题是,如何在不使用临时表的情况下存储此子查询的结果,以便select
联合中的每个都可以引用它?
php - 使用 jsonb_to_recordset 查询生成器原始横向连接
希望是一个非常简单的问题。我正在尝试根据我的 postgresql 查询在 Laravel 中创建一个查询,并且我很难转换这个特定的连接,因为它是使用 jsonb_to_recordset 的横向连接。
这是我到目前为止所尝试的,它说我的论点太少了。我知道它会喜欢'a'、'='、'b',但我不确定如何将'on true' 翻译成那个以及连接的横向方面。
最后,我尝试将整个查询发布到 Model::raw(DB::raw("......
sql - tsvector 的串联导致 Postgres 9.4.6 中的语法错误
在 SQL 查询中连接来自 setweight 的 tsvectors 时,会引发语法错误:
如果我用返回的单个 tsvector 尝试它,它工作正常setweight
,如果我尝试将整个东西包装在另一个to_tsvector
调用中,它会因为没有to_tsvector(tsvector)
函数而出错,所以连接确实形成了一个 tsvector。
我尝试将它包装在一个子查询中,但这使它成为一个记录,这会导致问题ts_rank_cd
,因为它预计textsearch
是 tsvector 类型。我怎样才能让这个连接的 tsvector 在这个查询中工作?
sql - OUTER APPLY 和 OUTER JOIN 有什么区别,何时使用?
在 SQL Server 中,Left 和 OUTER JOIN 有什么区别?
python - 将横向连接查询转换为 sqlalchemy
我很难将我在 sql (postgres) 中创建的查询翻译成 sqlalchemy。特别是,我在 sqlalchemy 中尝试的映射导致了荒谬的递归结果,其运行速度比我最初编写的要慢得多。
给定以下类型的表结构:
我正在尝试使用以下方式检索成对的主要和辅助数据:
- 我们匹配给定的属性
- 我们只返回“一些”原始数据(比如 1000)
- 我们返回“最好的”原始数据,即具有最多次要数据的原始数据。
- 每个主要条目我们只能得到“一些”(比如 10 个)辅助数据
第一个很容易通过两个表之间的连接来完成,但是第二个更复杂。我在原始 SQL 中使用的解决方案(请参阅此处了解导致我使用此解决方案的解释)是:
我已尽最大努力将其转换为 sqlalchemy,但是我一直遇到问题,即生成的查询在FROM
横向连接查询的子句中重写了子查询。
例如,下面的 sqlalchemy 代码(假设表对象定义与上述匹配)是部分解决方案。我想我可以添加缺少的列(正如您将在生成的 sql 中看到的那样):
长形式的连接查询如下,具有上述荒谬的嵌套结构:
再一次,我意识到这是一个不完整的尝试,因为并不是所有的列都在一开始就被 SELECTed,但关键问题是sqlalchemy 在横向连接子查询中创建了大量的嵌套查询。这是我一直无法解决的核心问题,除非解决了,否则完成剩下的查询毫无意义。
sql - 将 OUTER APPLY 转换为 Redshift
我有需要转换为 Redshift 的 MSSQL Server 脚本
这是脚本的一部分
我有错误
'(', ',', , , , AT, CROSS, EXCEPT, FETCH, FULL, GROUP, HAVING, INNER, INTERSECT, ISNULL, JOIN, LEFT, LIMIT, MINUS, NATURAL, NOTNULL, OFFSET, OPERATOR, ORDER, RIGHT , UNION, WHERE 或 '[' 预期,得到 'OUTER'
在这一行OUTER APPLY
如何将这些东西转换为 Redshift?
postgresql - PostgreSQL 错误:带有 JSON 集合返回函数的 CASE
我有一个带有使用 JSON 函数的 CASE 的 SELECT 语句,它在升级到 PostgreSQL 10 时停止工作。
错误:在 CASE 中不允许设置返回函数
提示:您也许可以将 set-returning 函数移动到 LATERAL FROM 项中。
我不明白如何使用 LATERAL FROM 是一种替代方法。事实上,即使阅读PG 文档(第 7.2.1.5 节) ,我也不完全理解为什么要使用 LATERAL 。
任何想法如何将此语句转换为与 PG 10 一起使用?