问题标签 [sqlperformance]
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 - 查询性能 WHERE 子句包含 IN(子查询)
当表开始增长时,我担心 WHERE 子句中的 IN 的性能。有没有人对这种查询有更好的策略?子查询返回的记录数比 TradeLine 表中的记录数增长慢得多。TradeLine 表本身以每天 10 次的速度增长。
谢谢你。
编辑:我使用了将子查询从 WHERE 移动到 FROM 的想法。我对所有有助于这个新查询的答案投了赞成票。
sql - 为什么 SQL 成本会随着简单的“或”而爆炸?
我有以下语句可以在我的数据中找到明确的名称(约 100 万个条目):
Oracle 显示 1477315000 的巨大成本,并且执行在 5 分钟后没有结束。只需将 OR 拆分为一个自己的存在子条款即可将性能提高到 0.5 秒,并将成本提高到 45000:
把它调整到最好不是我的问题,因为它只是一个很少执行的查询,而且我知道 CONTACT 超过了任何索引,但我只是想知道这么高的成本是从哪里来的。这两个查询在语义上似乎与我等效。
sql - 使用优化的一次查询获取日、月、年、终生总记录
我有一个运行 7.4 的 Postgres DB(是的,我们正在升级中)
我有四个单独的查询来获取每日、每月、每年和终身记录计数
对于月份,只需将查询中的单词替换DAY
为MONTH
每个时间段,依此类推。
寻找有关如何通过一个查询获得所有所需结果的想法以及建议的任何优化。
提前致谢!
注意:date_field 是没有时区的时间戳
更新:
抱歉,我确实过滤掉了带有额外查询约束的记录,只是想给出 date_field 比较的要点。抱歉有任何困惑
mysql - 基于在数据库中搜索整数或长字符串(唯一)的性能?
我在数据库的表中有 5 列,其中两列是唯一的(一列是整数,另一列是字符串)。
整数很像
1,5,6,7,9,0
,字符串很像 http://exmaple.com/Book-on-the-self-no-2
。
现在应该使用哪一列来搜索行???它将如何影响性能?数据库是sql还是mysql?
感谢..
sql - 使用 IN ... 的 SELECT 子句非常慢?
你们能否请查看以下对 Oracle DB 的查询并指出问题所在:
查询统计:
- 耗时:10.53 秒。
指数:
t2.empno
被索引。t1.id
被索引。t2.id
被索引。
更新
上面的查询只是我使用的查询的一个示例副本。下面以更真实的形式
解释计划
询问:
索引列:
桌子
表 2
sql-server - SQL Server 是否在复杂视图中传播 WHERE 条件?
我已经用一个完整的例子来跟踪这个问题,以防我不清楚这个问题的意思。
我制作了一个视图,它连接了来自大约五个表的数据。这些表有大量数据,查询运行缓慢。我的问题是,如果我这样做:
SQL Server 是否“知道我的意思”并自动将该条件传播到视图中的基础连接?这样它就不会适用于所有人,而是在正确的阶段最小化结果集。或者它会运行所有的东西,然后WHERE ID = 1000
在完整的结果集上运行?
一个例子
为了简化(...希望)我的意思,这是一个伪 TSQL 场景示例:
所以我想要一个视图,向我展示他们所参与的 所有内容People
,以及发生的事情。尽管此设置并不复杂,但您可以看到,如果每个实体有数万个,则执行可能需要很长时间。Activities
ActivityType
Location
视图可能是这样的:
所以如果要做
视图中的查询是否会为所有人运行,或者 SQL Server 是否知道它应该将其应用于该People.DOB
字段?
asp.net - 进行多次往返与使用临时表?
我需要保存一个包含几列的记录列表。我有两种方法可以做到这一点。
我可以简单地创建该元素的列表并在代码中多次执行存储过程
foreach(TestInfo test in lstTestInfo) {//执行存储过程}
我可以构建一个字符串并将其发送到数据库,在那里我可以将其拆分并将其存储在临时表中,然后通过一次往返将其插入那里
虽然这不是一个严重的问题......我想要一些见解。谢谢!
sql-server - 如何以有效的方式处理重复键插入而不会引发异常
我的案例场景将参数传递给一个过程,该过程只进行插入。但是两个线程可能会尝试传递相同的值。
如何处理这种情况而不会抛出异常并使用最少的锁?
我的性能要求是每秒至少 10k 次插入。
编辑:列是唯一的。时间戳可能会在插入之前更改(调整)。
sql - 使用用户定义的函数和性能?
我正在使用存储过程来获取数据,我需要动态过滤。例如,如果我不想获取一些 id 为 5、10 或 12 的数据,我将其作为字符串发送到过程,并通过用户定义的函数将其转换为表。但我必须考虑性能,所以这里是一个例子:
解决方案1:
解决方案2:
哪种解决方案对性能更好?
sql - SQL - 如何有效地选择不同的记录
我有一个对性能非常敏感的 SQL Server 数据库。我需要对以下问题做出有效的选择:
我有一个包含 4 个字段的简单表格:
每个 UserID 可以在 Active='false' 的 GroupID 中出现多次(以及在多个 groupID 中),但在 Active='true' 时只能出现一次。
如:
我需要从某个组中的表中选择所有不同的用户,它应该保存用户的最后一个活动状态。如果用户处于活动状态 - 它不应该返回用户的非活动状态,如果它在某个时间点是这样的。
天真的解决方案是双重选择 - 一个选择所有活动用户,然后一个选择所有未出现在第一个选择语句中的非活动用户(因为每个用户可能在某个时间点处于非活动状态)。但这将运行第一个选择(与活动用户一起)两次 - 这是非常不需要的。
有没有什么聪明的方法可以只做一个选择来获得所需的查询?想法?
提前谢谢了!