小编Gab*_*rio的帖子

分区和max的慢查询性能问题

我有一个性能不佳的查询...我做错了什么?请帮助我,它在我的系统中执行了无数次,解决后将带给我通往天堂的阶梯

我使用sp_Blitz对系统进行了检查,未发现任何致命问题

这是查询:

SELECT MAX(F.id) OVER (PARTITION BY idstato ORDER BY F.id DESC) AS id
FROM jfel_tagxml_invoicedigi F
     INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
  AND S.id = F.idstatocorrente
  AND F.sequence_invoice % @number_service_installed = @idServizio
ORDER BY F.id DESC,
         F.idstatocorrente OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)

这是查询计划

https://www.brentozar.com/pastetheplan/?id=SyYL5JOeE

我可以私下向您发送我的系统属性

更新:进行了一些修改,它是更好,但我认为可能会更好...这是新的查询:

SELECT MAX(F.id) AS id
FROM jfel_tagxml_invoicedigi F
     INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
  AND S.id = F.idstatocorrente …
Run Code Online (Sandbox Code Playgroud)

sql-server max sqlperformance query-performance

7
推荐指数
1
解决办法
241
查看次数

OLE DB 提供程序 ' 用于链接服务器返回的数据与预期的数据长度不匹配

我通过链接服务器从我的 sql server 2017 Standard 查询远程 postgresql 服务器时出错

这是查询:

    SELECT CAST(test AS VARCHAR(MAX))  FROM  OpenQuery(xxxx, 
     'SELECT  corpo::TEXT as test From public.notification')
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

    Msg 7347, Level 16, State 1, Line 57
    OLE DB provider 'MSDASQL' for linked server 'xxx' returned data that                 does not match expected data length for 
    column '[MSDASQL].test'. The (maximum) expected data length is 1024,         while the returned data length is 7774.
Run Code Online (Sandbox Code Playgroud)

即使没有转换,错误仍然存​​在

对于 odbc 和链接服务器,我遵循了这个方便的指南

linked-server sql-server-2017

5
推荐指数
1
解决办法
6669
查看次数

在 Postgres 10 中自动创建分区

我正在尝试按范围(创建日期)在一个巨大的表中自动执行 Postgres 10 中的分区。

我注意到没有自动创建分区表,因此我想编写一个过程来自动创建这些表。

我在想这样的事情:

CREATE OR REPLACE FUNCTION cdi.automating_partitions()
RETURNS TABLE(natural_id text, name text, natural_id_numeric text) AS
$func$
DECLARE
   formal_table text;
BEGIN
   FOR formal_table IN
       select '2017-01-01'::date + (n || ' months')::interval months,
       '2013-02-01'::date + (n || ' months')::interval monthsplus
       from generate_series(0, 12) n
   LOOP
      RETURN QUERY EXECUTE
   'CREATE TABLE cdi.' || 'document' || to_char(months, 'YYYY')  || ''  || to_char(months, 'MM') || ' PARTITION OF cdi.document
 FOR VALUES FROM  (''' ||  to_char(months, 'YYYY')  || to_char(months, 'MM')  || ''', …
Run Code Online (Sandbox Code Playgroud)

postgresql partitioning date dynamic-sql plpgsql

3
推荐指数
1
解决办法
2633
查看次数