query-optimization 相关问题

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

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

执行查询以获得符合某些条件的所有记录的总数,然后对其进行分页?

我需要查询分页数据。要求之一是不仅要显示给定页面上的项目,还要显示用户可以查看的项目总数(也支持页面导航...

回答 1 投票 0

XML 表上 PLSQL 查询的性能调整

我需要对 Oracle 数据库上的表执行一些查询。该表包含 XML 值。下面是我的 xml 结构的示例: 382010 我需要对 Oracle 数据库上的表执行一些查询。该表包含 XML 值。下面是我的 xml 结构示例: <Parent> <ParentId>382010</ParentId> <LastUpd>2023-03-01T22:59:10.456241</LastUpd> <UserId>0</UserId> <attrn>xxx</attrn> <Child> <ChildId>1</ChildId> <Attribute1 ID="1873" D="1466 Description">1466</Attribute1> <Attribute2 ID="1234" D="QWERTY Description" E="503" ED="Error 503 Description">QWERTY</Attribute2> <Attribute3 ID="4921" D="Other Description">YourValue</Attribute3> </Child> <Child> <ChildId>2</ChildId> <Attribute1 ID="1296" D="Some Description">1234</Attribute1> <Attribute2 ID="1234" D="Some Different Description">ABC</Attribute2> <Attribute3 ID="4921" D="Other Description" E="501" ED="Error 501 Description">MyValye</Attribute3> </Child> </Parent> 我需要选择所有有错误的孩子属性,可以通过“E”属性来识别(例如孩子1中的属性2和孩子2中的属性3)。 我对这种 XML 查询不是很专家,经过一番尝试后,我最终构建了下面的查询: SELECT EXTRACTVALUE (VALUE (X), '/Parent/UserId') AS USER_ID ,EXTRACTVALUE (VALUE (X), '/Parent/ParentId') AS PARENT_ID ,EXTRACTVALUE (VALUE (X), '/Parent/attrn') AS PARENT_ATTR_N_COL_NAME ,EXTRACTVALUE (VALUE (I), '/Child/ChildId') AS ROW_NUM ,CASE WHEN EXISTSNODE (VALUE (E), '/Attribute1/@E') = 1 THEN ATTR_ONE_COL_NAME WHEN EXISTSNODE (VALUE (E), '/Attribute2/@E') = 1 THEN ATTR_TWO_COL_NAME WHEN EXISTSNODE (VALUE (E), '/Attribute3/@E') = 1 THEN ATTR_THREE_COL_NAME END AS FIELD ,EXTRACTVALUE (VALUE(E), '/*/text()') as VALUE ,EXTRACTVALUE (VALUE(E), '/*/@E') as ERROR_CODE ,EXTRACTVALUE (VALUE(E), '/*/@ED') as ERROR_DESC FROM XML_TABLE X ,TABLE (XMLSEQUENCE (EXTRACT (VALUE (X), '/Parent/Child'))) I ,TABLE (XMLSEQUENCE (EXTRACT (VALUE (I), '/Child/*'))) E WHERE EXTRACTVALUE (VALUE (X), '/Parent/ParentId') = 382010 AND EXISTSNODE (VALUE (E), '/*/@E') = 1'; 当然,XML(然后是查询)实际上要大得多,我只是发布了一个简化的示例以使其更加综合。有时父节点包含数百个子节点,有时我需要查询数千个父节点,所以我想知道是否有一种方法可以优化上述查询并使其更快。 非常感谢:) 考虑用更新且更强大的 EXTRACTVALUE 替换已弃用的 XMLTABLE 函数。使用 XMLTABLE,所有解析都可以在一次查询中完成。然后,您可以使用该查询来执行 DML 操作,也可以循环遍历它以进行更多的过程控制。 下面的代码与您的结果并不完全匹配,但它足够接近,可以让您了解它是如何工作的。 select parent.user_id, parent.parent_id, parent.parent_attr_n_col_name, child.row_num, attribute.value, attribute.error_code, attribute.error_desc from xmltest x, xmltable ('/Parent' passing x.a columns user_id number path 'UserId', parent_id number path 'ParentId', parent_attr_n_col_name path 'attrn' ) parent, xmltable ('/Parent/Child' passing x.a columns row_num number path 'ChildId' ) child, xmltable ('/Parent/Child/*' passing x.a columns value varchar2(100) path 'text()', error_code varchar2(100) path '@E', error_desc varchar2(100) path '@ED' ) attribute where parent_id = 382010 and error_code is not null; 这是我用于测试代码的架构: --drop table xmltest; create table xmltest(a xmltype); insert into xmltest values(xmltype(' <Parent> <ParentId>382010</ParentId> <LastUpd>2023-03-01T22:59:10.456241</LastUpd> <UserId>0</UserId> <attrn>xxx</attrn> <Child> <ChildId>1</ChildId> <Attribute1 ID="1873" D="1466 Description">1466</Attribute1> <Attribute2 ID="1234" D="QWERTY Description" E="503" ED="Error 503 Description">QWERTY</Attribute2> <Attribute3 ID="4921" D="Other Description">YourValue</Attribute3> </Child> <Child> <ChildId>2</ChildId> <Attribute1 ID="1296" D="Some Description">1234</Attribute1> <Attribute2 ID="1234" D="Some Different Description">ABC</Attribute2> <Attribute3 ID="4921" D="Other Description" E="501" ED="Error 501 Description">MyValye</Attribute3> </Child> </Parent>')); 这是您的查询,根据之前的架构进行了一些对我有用的更改。我不确定你的表是如何设置的 - 使用 REF 而不是值? SELECT EXTRACTVALUE (X.a, '/Parent/UserId') AS USER_ID ,EXTRACTVALUE (X.a, '/Parent/ParentId') AS PARENT_ID ,EXTRACTVALUE (X.a, '/Parent/attrn') AS PARENT_ATTR_N_COL_NAME ,EXTRACTVALUE (I.column_value, '/Child/ChildId') AS ROW_NUM -- ,CASE -- WHEN EXISTSNODE (E.column_value, '/Attribute1/@E') = 1 THEN ATTR_ONE_COL_NAME -- WHEN EXISTSNODE (E.column_value, '/Attribute2/@E') = 1 THEN ATTR_TWO_COL_NAME -- WHEN EXISTSNODE (E.column_value, '/Attribute3/@E') = 1 THEN ATTR_THREE_COL_NAME -- END AS FIELD ,EXTRACTVALUE (E.column_value, '/*/text()') as VALUE ,EXTRACTVALUE (E.column_value, '/*/@E') as ERROR_CODE ,EXTRACTVALUE (E.column_value, '/*/@ED') as ERROR_DESC FROM xmltest X ,TABLE (XMLSEQUENCE (EXTRACT (X.a, '/Parent/Child'))) I ,TABLE (XMLSEQUENCE (EXTRACT (value(I), '/Child/*'))) E WHERE EXTRACTVALUE (X.a, '/Parent/ParentId') = 382010 AND EXISTSNODE (VALUE (E), '/*/@E') = '1';

回答 1 投票 0

两个数据库之间的 SQL View 速度极慢

在同一服务器上的另一个 SQL Server 数据库中查询表的视图上运行简单的 SQL 查询时,我遇到了主要的性能问题。 我有两个数据库,db1(包含table1,...

回答 1 投票 0

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