query-optimization 相关问题

标签指的是如何使查询运行得更快。其中一些问题可能属于DBA.stackexchange.com,特别是如果它们涉及重建索引,查询计划等。请使用其他标记来指定您的查询语言。默认情况下,假定为SQL。

优化 PostgreSQL 查询以将用户插入数据库

用例是这样的。 有一个注册端点,用户可以在该端点上提交他们的电子邮件和密码 必须一次创建 4 行并生成几个 id 桌子看起来像...

回答 1 投票 0

优化查询 - PostgreSQL - XPATH

我的查询(PostgreSQL)可以正常工作。 将 xml_test 作为 ( 选择 ' 我的查询(PostgreSQL)可以正常工作。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) select file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners from ( select (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text fiscal_household from xml_test ) temp ; 它给了我正确的结果,就是这些。 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 您可以看到我必须经历一个中间步骤并执行两次 SELECT。是否可以取消这个中间步骤?和/或优化这个查询? 感谢所有的灵感。 将财政家庭提取为笛卡尔积(即无约束连接)子查询。这实际上充当行级函数,将表达式附加到源输出。 请注意,我添加了一个新的第三个受益人以及新的fiscal_partners,以证明参照完整性得到了维护。 with xml_test as ( select '<!--Build-Version: 1.564-REVb37dd024a8-20220530T1418--><tns:Message xsi:schemaLocation="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013 T013_v1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="https://appprod.be/Trivia/documents/Docs/XSDs/v1/T013"> <Header> <Agent>90015299</Agent> <SocialFund>299</SocialFund> <MessageId>T013</MessageId> <Timestamp RequestDate="2022-06-16T23:20:00" ProcessDate="2022-06-16T23:25:20" ResponseDate="2022-06-16T23:25:20"/> <Reference NRK="6e6806740a6ea06d7ca6ae7b31edeb8e" Requestor="90010299"/> <Result>OK</Result> <ReturnCode>ResponseOnly</ReturnCode> </Header> <Body> <Request> <TransmissionMethod>BULK</TransmissionMethod> <SocialFundCode>299</SocialFundCode> <FileNumber>9913894</FileNumber> <FiscalYear>2020</FiscalYear> <FiscalHouseHolds> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999038</Beneficiary> <FiscalPartners> <FiscalPartner>65120999956</FiscalPartner> <FiscalPartner>94013099924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> <FiscalHouseHold> <Beneficiary>66090999040</Beneficiary> <FiscalPartners> <FiscalPartner>65120990056</FiscalPartner> <FiscalPartner>94013000924</FiscalPartner> </FiscalPartners> </FiscalHouseHold> </FiscalHouseHolds> </Request> </Body> </tns:Message>' as x ) SELECT (xpath('/tnsMessage/Body/Request/FileNumber/text()', replace(x, ':','')::xml))[1]::text file_number , (xpath('//Beneficiary/text()', fiscal_household::xml))[1]::text AS benef , array_to_string( (xpath('//FiscalPartner/text()', fiscal_household::xml)), ' - ') fiscal_partners FROM xml_test, (SELECT unnest(xpath('/tnsMessage/Body/Request/FiscalHouseHolds/FiscalHouseHold', replace(x, ':','')::xml))::text AS fiscal_household FROM xml_test) A ; 产量 文件编号 好处 财政合作伙伴 9913894 66090999038 65120999956 9913894 66090999038 65120999956 - 94013099924 9913894 66090999040 65120990056 - 94013000924 需要注意的是,仅仅因为 2 阶段查询与 3 阶段查询在语法上可能更清晰,查询优化器最终可能仍会构建相同的计划。

回答 1 投票 0

查询3张表,返回32条记录,耗时11秒。如何改进查询?

我正在使用 PHP 和 WordPress 进行数据库查询。 在下面的查询中,返回结果的时间太长。 (总共 32 个,查询耗时 11.4666 秒。) 数据库服务器返回超时

回答 1 投票 0

MySQL 查询结果获取时间远远超过执行时间,如何解决这个问题?

我使用MySQL 8.0.27-18,以InnoDB为引擎。我有一个巨大的数据库,其中有几个表包含 1 亿多行。例如:TABLE_A 具有 110M 行,TABLE_B 具有 300M+ 行。有时我...

回答 1 投票 0

优化MariaDB简单查询以及解释json格式语句中的实际成本是什么

我有2个问题: 有什么方法可以优化或改写这个查询以便我能够执行它吗?我等了两天多,查询仍在执行...... “成本如何&...

回答 1 投票 0

在连接表上排序真的很慢

我有一个与 job_events 表左连接的 jobs 表。 job_events 表有一个关于 type 和 jobId 的索引。 当我按 jobs.id 排序查询时,结果会在 200 毫秒内显示。当我订购时...

回答 1 投票 0

oracle综合指数最佳实践

我有一个表计算(id,客户,日期,类型,金额,公司,销售额...) 我有一个关于 date= 的 where 条件的查询?并输入=? 列类型只能有 3 个值:A、B 和 C(占 85% 的值...

回答 1 投票 0

Mysql 8 中磁盘 IO 达到 100%

我在 Centos 7 和 Centos 8 上使用 MySQL 8,并且在 27GB 表上运行一个简单的计数语句。通常,在 MySQL 5.7 中大约需要 10 秒,但在 MySQL 8 中,大约需要 10 分钟。我...

回答 2 投票 0

为什么从 pandas.date 中减去 pandas.timedelta 没有矢量化?

在 Pandas 2.2 上运行此命令,仅当从日期中减去 timedelta 但不从日期时间中减去 timedelta 时,我才会看到性能警告: 将 pandas 导入为 pd s1 = pd.DataFrame({"年份&q...

回答 1 投票 0

有没有一种方法可以编写不带 AND 运算符的连接 where 子句?

只是出于好奇,是否有一种简短/漂亮的方法来编写经典的 sql where 子句,而无需使用 AND 运算符来连接表? 经典的: select * from table1, table2, table3 where table1.fkId=table...

回答 1 投票 0

增强一列 280M 行的排序

我有一个应用程序,它在应用分页后在网格内显示 SQL Server 表的记录。用户可以过滤或将订单应用到任何列。 当桌子变得太大时就会出现问题......

回答 1 投票 0

CloudSQL 与 PostgreSQL 性能非常慢

我想从 BigQuery 迁移到 CloudSQL 以节省成本。 我的问题是,与 BigQuery 相比,带有 PostgreSQL 的 CloudSQL 非常慢。 在 BigQuery 中需要 1.5 秒的查询几乎需要...

回答 6 投票 0

WHERE 子句中不同的比较列导致意外的速度变慢

(以下所有标识符均已匿名。) 我在 Postgres 中有以下查询: 选择id,dt 来自表1 t1 WHERE 状态不为空 和 ( (不存在(从 table2 t2 中选择 1,其中 t2。

回答 1 投票 0

Oracle 在尝试从 2 个现有视图创建表或物化视图时非常慢

我有一个名为 STAFFACTIVE 的经典 Oracle 视图,其中包含大约 9500 行,每行 10 个小型本机数据类型字段(仅限数字和 varchar2(100))。 该视图是通过来自

回答 1 投票 0

如何提示内部选择查询并行运行以进行批量更新

SELECT 查询与大量工作人员一起运行“并行 Seq”扫描。现在,当此查询用作 UPDATE 中的子查询时,它会回归到“Seq”扫描,即非并行。 ...

回答 1 投票 0

postgres 并行顺序扫描

尽管 cpv.value 列上存在索引,但仍选择并行顺序扫描。值列的数据类型为“text”。这是查询计划中成本最高的步骤。我如何调整它以...

回答 2 投票 0

如果我有一个包含三列的索引,但我有两个查询,一个仅针对两列,一个针对三列 - 两者都会使用相同的索引吗?

我有一个对象,其中 IsDeleted 和 RealmIntID 作为列,这些列将始终出现在该对象的每个查询中(以及一些分页参数)。我们不想退回软删除的o...

回答 1 投票 0

使用 Dapper ORM 优化 SQL Server 中大型表的查询性能

简介: 在我们的应用程序中,我们利用 Dapper ORM 与 SQL Server 数据库进行交互。我们的关键表之一,OperationSteps,随着时间的推移显着增长,导致

回答 1 投票 0

对 WHERE 和 ORDER BY 列使用 PostgreSQL 索引

对于以下查询,在我们有的情况下 < 25 records for the contracts 1, 2, 3, this query performs extremely slow: SELECT * FROM transactions AS t WHERE t.contract_id in (1, ...

回答 1 投票 0

我想提高我的 Snowflake SQL 查询性能

我有一个雪花查询,我正在尝试提高性能。 热膨胀系数为 ( 选择不同的 交流电 来自“DB1”。“SCHEMA1”。“TABLE1” 在哪里 AG = 'PPPP...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.