问题标签 [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.
sql-server-2008 - 我可以将超过 100 万行的 SQL 结果复制并粘贴到 Excel 中吗?
我一直在运行一个庞大的 SQL 查询,如下所示:
我听说 Excel 最多有 100 万行。不知道如何处理这个
表 BIG_Sessions 很大。它为给定的 RespondentID 提取多个 SessionID - 但我只想要一个。
我不知道如何筛选这个。任何提示表示赞赏。
sql - 查询优化
我在 Microsoft Access 中有一个查询,需要大约 6 秒才能返回 1000 条记录。
我将索引放在必要的字段上。 tb_bauteile有 ca 3000 条记录,FehlerCodes_akt_Liste有 ca 20000 条记录。如果我删除Where和order Clause,查询会非常快地返回记录。如何优化我的查询?
mysql - SQL 引擎优化到那么远了吗?(见示例)
假设我按如下方式查询数据库:
我的问题是:
T1.factor1 * T2.factor2
引擎会执行一次还是N 次?
(请给出与您选择的数据库引擎相关的答案!)
您还可以给出更一般的答案(假设会有P因子,而不仅仅是 2。
编辑:您可以用T1.factor1 * T2.factor2
您选择的任何计算密集型函数替换,该函数对于每个输出行都有不同的值。
mysql - 从 GROUP_BY 查询中优化 COUNT(*)
下面是一个有效的 SQL 查询,它返回按用户的多个帐户分组的未查看消息计数列表。但是,我们实际上并不需要计数,只需要一点点来表明存在未查看的消息。在不拆开相当复杂的 JOIN 逻辑的情况下,您能否看到一种通过将 COUNT 替换为 EXISTS/HAVING/DISCTINCT 1 或其他技术来优化查询的方法?
我最初以为我什至可以将 COUNT 替换为 FIRST 以进行一些简单的优化,但不能使用 MySQL ......
(我看过这个问题,但是 GROUP BY 很难应用我见过的任何替代方案)
java - 在不使用 StoredProcedures 的情况下检索多个 ResultSet
Java 1.5 中有没有一种方法可以ResultSet
通过单个 SQL 调用从 DB2 数据库中检索多个对象,而无需使用 StoredProcedures / CallableStatements
?
mysql - 如何获取 2.5m 行的 MySql 中的最后一条记录
我想获取 MySql 表中的最后一条记录,但该表有 250 万行。如何有效地获得最后一行?
我正在使用订单和限制,但查询运行约 15 秒。我必须将此值减小到几乎为零。
我的 SQL 查询:
SELECT id FROM table1 WHERE scenedevice_id = X AND module_id = Y ORDER BY id DESC LIMIT 0,1
编辑:我也试过 MAX(id) 。
编辑:这是我的桌子 -
谢谢。
subquery - 我可以重用子查询的结果来优化整体查询吗?
我正在使用以下查询来获取 profile_run_key 的前两条记录。我正在使用三个几乎相似的查询来完成这项工作。这意味着我要为“where”子句遍历表三次。所以我认为这将需要 3(n) 时间来执行。或者,我可以使用“Order by”,但执行需要 nlogn 时间。
我想知道是否可以重用(我不想创建临时表)以下子查询的结果?有什么选择吗?建议?
sql - 如何让 PostgresQL 优化器在绑定参数之后构建执行计划?
我正在为 PostgresQL 9.1 开发 Pg/PLSQL 函数。当我在 SQL 查询中使用变量时,优化器会构建一个错误的执行计划。但是,如果我用它的值替换一个变量,那么计划就可以了。例如:
3s内完成
和
在 300 毫秒内执行
在第一种情况下,优化器为v_param的任何值生成一个固定计划。
在第二种情况下,优化器会根据指定的值生成一个计划,尽管不使用计划缓存,但它的效率要高得多。
是否可以让优化器在没有动态绑定的情况下生成计划并在每次执行查询时生成计划?
sql - SQL查询性能说明
我有这个查询(当然还有跨表的几个连接和一些视图,为了简单起见,我将它们称为 x)。
- 案例 1:
select * from x
-> 在 10 秒内返回,仍然可以接受,连接和大量数据相当繁重 - 案例2:
select * from x where userid = 1
->在0-1秒内返回,足够好 案例 3:使用 SP:
if @userid = -1 select * from x else select from x where userid = @userid
-> 现在使用参数用户 ID 1 调用 sp 应该在 0-1 秒内返回,因为它应该与案例 2 相当,但实际上它在 10 秒内返回。现在,参数屏蔽 OR WITH RECOMPILE on sp OR OPTION (recompile) on query with where 子句没有帮助,使 SP 运行得更快的
userid = something
原因是将 OPTION(recompile) 放在 SP 的第一部分,即在没有 where 的查询上条款。:- 案例 4:使用 SP:
if @userid = -1 select * from x option (recompile) else select * from x where userid = @userid
有什么解释吗?
我可以猜到它使用基于查询的优化而没有 where 子句,即使是带有 where 子句的查询,但这是为什么呢?
mysql - 优化用于标签匹配的 SQL 查询
示例数据集:
id
并且tag
都被索引。
我正在尝试获取与标签 [汽车、自行车] 匹配的 ID(标签的数量可能会有所不同)。
这样做的一个天真的查询是:
但是,这样做是非常低效的,因为 group by 并且任何匹配一个标签的行都被考虑到 group by (而且我有很大的体积)。
对于这种情况有更有效的查询吗?
我看到的唯一解决方案是让另一个表包含以下内容:
但这不是一个易于实施和保持最新的解决方案。
附加信息:
- 名称匹配必须准确(无全文索引)
- 标签的数量并不总是 2