据我了解,or应尽可能避免使用查询中的经验法则。
我有两个具有一对多关系的表。
我已经加入了两个如下表。
SELECT A.*, group_concat(B.info separator ','), group_concat(B.info2 separator ',')
FROM A
JOIN B
ON A.id = B.a_id
GROUP BY A.id;
Run Code Online (Sandbox Code Playgroud)
使用是否GROUP_CONCAT会像or在 MySQL 中一样影响性能?如果是这样,连接这些表的有效方法是什么?
任何建议或建议将不胜感激。谢谢你。
如果ID = 01234并且此 ID 在一个月内进行了 3 次交易,如下所示:
***DAY_no Balance***
1/1/2018 5000
10/1/2018 10000
15/1/2018 12000
Run Code Online (Sandbox Code Playgroud)
我想要这样的数据:
***DAY_no Balance***
1/1/2018 5000
2/1/2018 5000
3/1/2018 5000
4/1/2018 5000
5/1/2018 5000
6/1/2018 5000
7/1/2018 5000
8/1/2018 5000
9/1/2018 5000
10/1/2018 10000
11/1/2018 10000
12/1/2018 10000
13/1/2018 10000
14/1/2018 10000
15/1/2018 12000
16/1/2018 12000
17/1/2018 12000
18/1/2018 12000
19/1/2018 12000
20/1/2018 12000
21/1/2018 12000
22/1/2018 12000
23/1/2018 12000
24/1/2018 12000
25/1/2018 12000
26/1/2018 12000
27/1/2018 12000
28/1/2018 12000
29/1/2018 12000
30/1/2018 12000 …Run Code Online (Sandbox Code Playgroud) performance sql-server subquery sql-server-2012 query-performance
你好朋友我正在研究一个从数据库中绘制数据的模块,问题是我必须首先绘制一系列通过数学公式的数据。到目前为止没问题,但我必须从一年中的几个月中获取数据,因此我必须重复这个过程十二次。我的真实问题是这样的:
我怎样才能让每个响应只有一行一行?
如果我尝试这样的事情......
DECLARE @cnt INT = 0;
WHILE @cnt < 12
BEGIN
select idestatus from order
SET @cnt = @cnt + 1;
END;
Run Code Online (Sandbox Code Playgroud)
我将执行 12 个查询和 12 个表而我只需要一个。我最终会将其转换为json,因此我希望将所有内容都放在一个响应表中。这是我的查询:
declare
@a decimal(5,2) = 0,
@d decimal(5,2) = 0,
@f1 decimal(5,2) = 0,
@f2 decimal(5,2) = 0
set
@a = (
select
COUNT(idEstatus) A_D
from t1
where (year(dat)) = 2017 and (month(dat)) = 1
and idEstatus = 2
)
set
@d = (
COUNT(idEstatus) A_D
from t1
where (year(dat)) …Run Code Online (Sandbox Code Playgroud) 我们的数据库正在接收以下请求:
select * from [schema].[table] (nolock) where (Date_A > Date_B and Archive = 0)
Run Code Online (Sandbox Code Playgroud)
这是我们的应用程序发出的正常请求。平均而言,完成请求需要 200 毫秒 - 400 毫秒,CPU 大约需要 100 毫秒 - 150 毫秒。读取通常在 48k 左右。这至少是该脚本如何执行的一个示例。
加速此类请求的最佳方法是什么(如果有办法)?
该表有 240,932 行,查询返回 0 条记录。
请帮我解释这个声明和计划:
https://www.brentozar.com/pastetheplan/?id=Bysy6YtEV
我们从 Oracle 迁移到 SQL Server,我们有一些非常奇怪的行为。它可能与迁移过程中的问题有关。
我发现很难解释执行计划。两种环境都应该具有相同的结构和索引。统计数据应该是最新的。SQL Server 中的设置:
DB 大小为 600 Gb,16 核,160 Gb 内存。
查询:
SELECT
COUNT ( t_01.rsecondary_objectu ) AS selectExpr
FROM
PIMANRELATION t_01 ,
PITEM t_02 ,
PITEMREVISION t_03
WHERE
( ( ( ( t_01.rprimary_objectu = t_02.puid )
OR ( t_01.rprimary_objectu = t_03.puid )
)
AND
( t_01.rrelation_typeu = 'w8INy241VJFL2B' )
)
AND t_01.rsecondary_objectu = '2yLJkWqiVJFL2B'
)
Run Code Online (Sandbox Code Playgroud)
甲骨文
我们发现问题是相关的,并且取决于数据。如果我选择一个不同的项目在 GUI 中复制(它实际上是一个复制的东西以及应用程序如何执行这些语句),它会立即工作。查询然后一旦工作正常看起来有点不同:https …
performance sql-server execution-plan sql-server-2014 query-performance
我有一个包含some_column数据类型列的表integer。
我注意到我的 PostgreSQL 10.6 实例足够智能,可以将以下两个查询解释为相同:
select * from my_table where some_column = 5; -- no quotes
select * from my_table where some_column = '5'; -- quotes added
Run Code Online (Sandbox Code Playgroud)
在列的where子句中添加引号有什么影响integer?
它会对一个包含 2000 万行的大表产生性能影响吗?
(有一个索引some_column。)
postgresql performance syntax postgresql-10 query-performance
我有一个有几行的存储过程:
AND ( @StartDate IS NULL OR @StartDate <= r.ReferralDate )
AND ( @EndDate IS NULL OR @EndDate >= r.ReferralDate )
Run Code Online (Sandbox Code Playgroud)
是否应该改写为:
AND ( r.ReferralDate >= @StartDate or @Startdate IS NULL )
AND ( r.ReferralDate <= @EndDate or @EndDate IS NULL )
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法并查看执行计划。估计的行数略有不同,但除此之外我没有看到任何变化,所以我认为语句中的顺序无关紧要,但希望有人可以验证。
这是Queries 随机变慢的后续行动,良好的预防措施?,试图就那里陈述的一个想法提出更具体的问题。
查询在长时间的快速历史之后突然变慢的一个常见原因是基数估计过时。SQL Server 利用基数估计来找出最快回答给定查询的查询计划。如果由于基数估计过时,通常需要几分钟的查询突然激增至数十小时,则可能会在支持人员做出响应之前对业务使用产生负面影响。
是否有任何措施可以在执行查询之前先发制人地应用以查找和修复过时的基数估计?是否有任何特定的工具可以定期执行以检查并修复它们,或者可能需要观察一些指标来表明数据库中的估计值有多好?
我们在具有 8 个套接字和 20 个处理器的 VM 上托管了一个 UAT3 服务器,我们在具有相同配置的同一 VM 上托管了类似的 UAT2 服务器。
我们在两个服务器上运行以下查询
select recid from Table1 where nation='AE'
Run Code Online (Sandbox Code Playgroud)
两个服务器具有相同的数据和相同的结构。
UAT2 和 UAT3 具有默认设置并行度5 和最大并行度的成本阈值0。
IN UAT2 服务器并行处理正在发生。它需要 10 秒才能完成,但 UAT3 串行处理正在发生,因为它需要 3 分 30 秒。
我们比较 UAT2 和 UAT3 服务器配置都相同。不知道为什么 SQL Server 在 UAT2 中选择并行执行而不是在 UAT3 中。
下面是表定义
select recid from Table1 where nation='AE'
Run Code Online (Sandbox Code Playgroud)
下面是视图
CREATE TABLE [dbo].[FKMB_CUSTOMER](
[RECID] [nvarchar](64) NOT NULL,
[XMLRECORD] [xml] NULL,
[ALT_CUSTOMER] AS
([dbo].[IX_CUSTOMER_ALT_CUSTOMER]([XMLRECORD]))
PERSISTED,
[SMS] AS
([dbo].[IX_CUSTOMER_SMS_1]([XMLRECORD])) …Run Code Online (Sandbox Code Playgroud) performance ×8
sql-server ×8
mysql ×1
parallelism ×1
postgresql ×1
subquery ×1
syntax ×1
t-sql ×1