问题标签 [sql-optimization]

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.

0 投票
1 回答
2847 浏览

mysql - MySQL:如何在特定节点中查找叶子

我知道这种问题已经在这里发布过很多次了,例如:Java way

id我在标准树模式( ,,, )parent_id中有大量数据(150k+ some_data

问题:如何获取给定 node_id 的叶子?

表结构:

数据库:MySQL 5.1.61

0 投票
2 回答
114 浏览

mysql - 子选择或连接?有没有更好的方法来编写这个 mysql 查询?

我知道总有更好的方法来做某事,但我不确定如何做?优化此查询的最佳方法是什么?我应该使用联接、单独的查询等吗?我知道这不是一个复杂的查询……只是想扩展我的知识。

任何建议,将不胜感激!

0 投票
1 回答
208 浏览

mysql - 使用 from 中的子查询优化 SQL

我想优化一条SQL语句,下面是原始的。

在我的电脑上大约需要 34 秒。

截屏

我的想法是将子查询编写为 Join 并在 Where 子句中设置条件。

这是我难以置信的快速 SQL:

如果我写信给我,explain improved_sql 我会看到一个Impossible WHERE列。我试过但找不到为什么这是不可能的。我检查了字段的兼容性:不需要将 int 与 varchar 进行比较等情况。我找不到任何重大错误,这就是我在这里的原因。

WHERE 子句中是否存在逻辑错误?就像要求一个领域成为1,后来成为2

以 ID 结尾的字段是 INT 以 NAME 结尾的字段,代码是 varchar (255) 带有文本的字段是 450 和 8192 varchar(仅在一个地方使用)

翻译:“denumire”的意思是“描述”——或者类似的东西:)

不确定服务器端运行的是哪个版本的mysql,可能是5。

如果我有充分的理由,我可以建议更改表结构,可能会调整代码。

编辑:

它来自这里的不可能:

备注:INNER JOIN ,而不是 LEFT JOIN。

Edit2:表:furnizorlist 42,751 条记录表:distribitems 72,290 条记录

0 投票
1 回答
517 浏览

sql-server-2008 - 删除 where 子句然后添加回来时的执行计划优化

我有一个使用表值函数的存储过程,该函数在 9 秒内执行。如果我更改表值函数并删除 where 子句,则存储过程将在 3 秒内执行。如果我添加 where 子句,查询仍会在 3 秒内执行。

我查看了执行计划,似乎在删除 where 子句后,执行计划包括并行性,并且我的 2 个表的扫描计数从 50000 和 65000 下降到 5 和 3。添加 where 子句后回来,优化的执行计划仍然运行,除非我运行 DBCC FREEPROCCACHE。

问题 1. 为什么只有在我第一次删除 where 子句时,SQL Server 才会开始对两个查询都使用优化的执行计划?

  1. 有没有办法强制 SQL Server 使用这个执行计划?

此外,这是一个参数化的一体式查询,它在 where 子句中使用 (Parameter is null or Parameter),我认为这对性能不利。

0 投票
1 回答
116 浏览

sql - SQL查询的临时表vs短路操作

以下是我要优化的查询,这里优化的瓶颈是 CONDITION_B。

如果我将上述查询的结果留下 CONDITION_B 到一个临时表,然后在该临时表上应用 CONDITION_B,我会获得非常好的性能提升。我认为 CONDITION_B 总是评估 CONDITION_A 的结果是否为假。

任何人都可以让我知道是否有更好的方法。并且短路操作是否在 SQL 查询语句中起作用,如果是,它们的处理顺序是什么。

0 投票
2 回答
190 浏览

mysql - MySQL 查询优化和/或调整

我有以下查询,这两个表都很大。查询非常慢,我需要您的想法来优化此查询,或者您有其他解决方案吗?

顺便说一句,我应用了适当的索引。

更新:

好的,我已经附上了解释结果。在此处输入图像描述

0 投票
3 回答
80 浏览

mysql - MySQL 查询优化 - 索引

我有这些表:

我需要使用 dstat 中的条件并按照 cstat.order 或 dstat.cstat_order 的顺序从 cstat 中选择一条记录。

我的查询如下所示:

谁能帮我创建什么索引来防止使用文件排序?我相信我已经尝试了几乎所有的方法,但我失败了。此基本查询有更多修改(表 dstat 的另一个或多个连接,但现在不重要)。

非常感谢你的帮助。

编辑:说实话 - 我已经尝试了很多索引。我声明的基础是 cstat_id_cstat 上的主键。目前我有以下索引:

这部分解决了我的索引阅读问题。但是排序总是使用文件排序。

EXPLAIN

0 投票
1 回答
213 浏览

mysql - 使用 SUM ... CASE 优化选择

有没有办法优化这个查询:

这是解释输出:

谢谢!

卢西亚诺

0 投票
1 回答
63 浏览

mysql - 如何优化这个嵌套的 SQL 查询

这是数据库架构:

[编辑]

我将描述我对下面的查询所做的事情:

最内层查询:选择所有saleId满足WHERE条件的s

中间查询:选择所有productId属于saleId

最外层查询SUMproducts.cost选择vendors.name

这是我想出的 SQL 查询:

对优化有什么帮助吗?

0 投票
1 回答
92 浏览

sql - 关于多表查询性能的问题

多表查询有两种方式:

查询一:

查询 2:

对于每一行:

做另一个查询:

当表很大时,哪个性能更好?