AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 171030
Accepted
John Eisbrener
John Eisbrener
Asked: 2017-04-15 10:09:47 +0800 CST2017-04-15 10:09:47 +0800 CST 2017-04-15 10:09:47 +0800 CST

Otimizar subconsulta com função de janela

  • 772

Como minhas habilidades de ajuste de desempenho nunca parecem suficientes, sempre me pergunto se há mais otimização que posso realizar em algumas consultas. A situação à qual esta pergunta se refere é uma função Windowed MAX aninhada em uma subconsulta.

Os dados que estou pesquisando são uma série de transações em vários grupos de conjuntos maiores. Eu tenho 4 campos de importância, o ID exclusivo de uma transação, o ID do grupo de um lote de transações e as datas associadas à respectiva transação única ou grupo de transações. Na maioria das vezes, a Data do Grupo corresponde à Data Máxima de Transação Única para um Lote, mas há momentos em que os ajustes manuais passam pelo nosso sistema e uma operação de data única ocorre após a captura da data da transação do grupo. Esta edição manual não ajusta a data do grupo por design.

O que eu identifico nesta consulta são aqueles registros onde a Data Única cai após a Data do Grupo. A consulta de exemplo a seguir cria um equivalente aproximado do meu cenário e a instrução SELECT retorna os registros que estou procurando, no entanto, estou abordando essa solução da maneira mais eficiente? Isso demora um pouco para ser executado durante o carregamento da minha tabela de fatos, pois meu registro conta o número nos 9 dígitos superiores, mas principalmente meu desdém por subconsultas me faz pensar se há uma abordagem melhor aqui. Não estou tão preocupado com nenhum índice, pois tenho certeza de que eles já estão em vigor; o que estou procurando é uma abordagem de consulta alternativa que alcançará a mesma coisa, mas de forma ainda mais eficiente. Qualquer feedback é bem-vindo.

CREATE TABLE #Example
(
    UniqueID INT IDENTITY(1,1)
  , GroupID INT
  , GroupDate DATETIME
  , UniqueDate DATETIME
)

CREATE CLUSTERED INDEX [CX_1] ON [#Example]
(
    [UniqueID] ASC
)


SET NOCOUNT ON

--Populate some test data
DECLARE @i INT = 0, @j INT = 5, @UniqueDate DATETIME, @GroupDate DATETIME

WHILE @i < 10000
BEGIN

    IF((@i + @j)%173 = 0)
    BEGIN
        SET @UniqueDate = GETDATE()+@i+5
    END
    ELSE
    BEGIN
        SET @UniqueDate = GETDATE()+@i
    END

    SET @GroupDate = GETDATE()+(@j-1)

    INSERT INTO #Example (GroupID, GroupDate, UniqueDate)
    VALUES (@j, @GroupDate, @UniqueDate)

    SET @i = @i + 1

    IF (@i % 5 = 0)
    BEGIN
        SET @j = @j+5
    END
END
SET NOCOUNT OFF

CREATE NONCLUSTERED INDEX [IX_2_4_3] ON [#Example]
(
    [GroupID] ASC,
    [UniqueDate] ASC,
    [GroupDate] ASC
)
INCLUDE ([UniqueID])

-- Identify any UniqueDates that are greater than the GroupDate within their GroupID
SELECT UniqueID
     , GroupID
     , GroupDate
     , UniqueDate
FROM (
    SELECT UniqueID
         , GroupID
         , GroupDate
         , UniqueDate
         , MAX(UniqueDate) OVER (PARTITION BY GroupID) AS maxUniqueDate
    FROM #Example
    ) calc_maxUD
WHERE maxUniqueDate > GroupDate
    AND maxUniqueDate = UniqueDate

DROP TABLE #Example

dbfiddle aqui

sql-server sql-server-2012
  • 5 5 respostas
  • 6365 Views

5 respostas

  • Voted
  1. Paul White
    2017-04-15T21:51:46+08:002017-04-15T21:51:46+08:00

    Quando e se você puder atualizar do SQL Server 2012 para o SQL Server 2016, poderá aproveitar o desempenho muito aprimorado (especialmente para agregações de janela sem moldura) fornecido pelo novo operador Window Aggregate do modo de lote.

    Quase todos os grandes cenários de processamento de dados funcionam melhor com armazenamento columnstore do que rowstore. Mesmo sem mudar para columnstore para suas tabelas base, você ainda pode obter os benefícios do novo operador 2016 e execução do modo em lote criando um índice filtrado de columnstore não clusterizado vazio em uma das tabelas base ou por junção externa redundante a um columnstore organizado tabela.

    Usando a segunda opção, a consulta se torna:

    -- Just to get batch mode processing and the window aggregate operator
    CREATE TABLE #Dummy (a integer NOT NULL, INDEX DummyCC CLUSTERED COLUMNSTORE);
    
    -- Identify any UniqueDates that are greater than the GroupDate within their GroupID
    SELECT
        calc_maxUD.UniqueID,
        calc_maxUD.GroupID,
        calc_maxUD.GroupDate,
        calc_maxUD.UniqueDate
    FROM 
    (
        SELECT
            E.UniqueID,
            E.GroupID,
            E.GroupDate,
            E.UniqueDate,
            maxUniqueDate = MAX(UniqueDate) OVER (
                PARTITION BY GroupID)
        FROM #Example AS E
        LEFT JOIN #Dummy AS D -- The only change to the original query
            ON 1 = 0
    ) AS calc_maxUD
    WHERE 
        calc_maxUD.maxUniqueDate > calc_maxUD.GroupDate
        AND calc_maxUD.maxUniqueDate = calc_maxUD.UniqueDate;
    

    db<>violino

    Observe que a única alteração na consulta original é criar uma tabela temporária vazia e adicionar a junção esquerda. O plano de execução é:

    plano agregado da janela do modo de lote

    (58 row(s) affected)
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0
    Table '#Example'. Scan count 1, logical reads 40, physical reads 0, read-ahead reads 0
    

    Para obter mais informações e opções, consulte a excelente série de Itzik Ben-Gan, What You Need to Know about the Batch Mode Window Aggregate Operator in SQL Server 2016 (em três partes).

    • 11
  2. Best Answer
    Daniel Hutmacher
    2017-04-15T10:24:30+08:002017-04-15T10:24:30+08:00

    Estou assumindo que não há índice, pois você não forneceu nenhum.

    Logo de cara, o índice a seguir eliminará um operador Sort em seu plano, que de outra forma consumiria muita memória:

    CREATE INDEX IX ON #Example (GroupID, UniqueDate) INCLUDE (UniqueID, GroupDate);
    

    A subconsulta não é um problema de desempenho neste caso. Se alguma coisa, eu procuraria maneiras de eliminar a função de janela (MAX... OVER) para evitar a construção de loop aninhado e spool de tabela.

    Com o mesmo índice, a consulta a seguir pode, à primeira vista, parecer menos eficiente e passa de duas a três varreduras na tabela base, mas elimina um grande número de leituras internamente porque não possui operadores Spool. Acho que ainda terá um desempenho melhor, principalmente se você tiver núcleos de CPU e desempenho de E/S suficientes em seu servidor:

    SELECT e.UniqueID
         , e.GroupID
         , e.GroupDate
         , e.UniqueDate
    FROM (
        SELECT GroupID, MAX(UniqueDate) AS maxUniqueDate
        FROM #Example
        GROUP BY GroupID) AS agg
    INNER JOIN #Example AS e ON agg.GroupID=e.GroupID
    WHERE agg.maxUniqueDate > e.GroupDate
        AND agg.maxUniqueDate = e.UniqueDate
    OPTION (MERGE JOIN);
    

    (Observação: adicionei uma MERGE JOINdica de consulta, mas isso provavelmente deve acontecer automaticamente se suas estatísticas estiverem em ordem. A prática recomendada é deixar dicas como essas, se possível.)

    • 9
  3. Erik Darling
    2017-04-15T10:56:04+08:002017-04-15T10:56:04+08:00

    Eu só vou jogar o velho Cross Apply por aí:

    SELECT e.*
        FROM #Example AS e
        CROSS APPLY ( SELECT TOP 1 e2.UniqueDate AS maxUniqueDate
                        FROM #Example AS e2
                        WHERE e2.GroupID = e.GroupID 
                        ORDER BY e2.UniqueDate DESC
                        ) AS ca
        WHERE ca.maxUniqueDate > e.GroupDate
            AND ca.maxUniqueDate = e.UniqueDate;
    

    Com algum tipo de índice, ele se sai muito bem.

    CREATE CLUSTERED INDEX cx_whatever ON #Example (GroupID)
    
    CREATE UNIQUE NONCLUSTERED INDEX ix_whatever ON #Example (GroupID, UniqueDate DESC, GroupDate)
    

    As estatísticas time e io se parecem com isso (sua consulta é o primeiro resultado)

    Table 'Worktable'. Scan count 3, logical reads 28004, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table '#Example'. Scan count 1, logical reads 51, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 15 ms,  elapsed time = 20 ms.
    
    Table '#Example'. Scan count 10001, logical reads 21336, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 16 ms,  elapsed time = 11 ms.
    

    Os planos de consulta estão aqui (novamente, o seu é o primeiro):

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

    Por que eu prefiro esta versão? Evito os carretéis. Se isso começar a vazar para o disco, vai ficar feio.

    Mas você pode querer experimentar isso também.

    SELECT e.*
        FROM #Example AS e
        CROSS APPLY ( SELECT e2.UniqueDate AS maxUniqueDate
                        FROM #Example AS e2
                        WHERE e2.GroupID = e.GroupID 
                        ) AS ca
        WHERE ca.maxUniqueDate > e.GroupDate
            AND ca.maxUniqueDate = e.UniqueDate;
    

    Se este for um DW grande, você pode preferir a junção de hash e a filtragem de linha na junção, em vez de no final da TOP 1consulta como um operador de filtro.

    O plano está aqui: https://www.brentozar.com/pastetheplan/?id=BkUF55ATx

    Tempo de estatísticas e io aqui:

    Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table '#Example'. Scan count 2, logical reads 84, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 16 ms,  elapsed time = 5 ms.
    

    Espero que isto ajude!

    Uma edição, baseada na ideia de @ypercube, e um novo índice.

    CREATE NONCLUSTERED INDEX ix_meh ON #Example (UniqueDate,GroupDate) INCLUDE (UniqueID,GroupID);
    
    WITH t1 AS 
    (
        SELECT DISTINCT
        e.GroupID ,
        MAX(UniqueDate) AS MaxUniqueDate
        FROM #Example AS e
        GROUP BY e.GroupID
    )
    SELECT *
    FROM #Example AS e
    CROSS APPLY (
    SELECT *
    FROM t1
        WHERE t1.MaxUniqueDate > e.GroupDate
            AND t1.MaxUniqueDate = e.UniqueDate
            AND t1.GroupID = e.GroupID
    ) ca
    

    Aqui estão as estatísticas de tempo e io:

    Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table '#Example'. Scan count 2, logical reads 91, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 4 ms.
    

    Aqui está o plano:

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

    • 8
  4. SqlZim
    2017-04-15T10:25:11+08:002017-04-15T10:25:11+08:00

    eu daria uma olhadatop with ties

    Se GroupDateé o mesmo por GroupIdentão:

    select top 1 with ties 
       UniqueID
     , GroupID
     , GroupDate
     , UniqueDate
    from #Example
    where UniqueDate > GroupDate
    order by row_number() over (partition by GroupId order by UniqueDate desc)
    

    Senão: usando top with tiesem uma expressão de tabela comum

    with cte as (
      select top 1 with ties 
          UniqueID
        , GroupID
        , GroupDate
        , UniqueDate
      from #Example
      order by row_number() over (partition by GroupId order by UniqueDate desc)
    )
    select *
    from cte
    where UniqueDate > GroupDate
    

    dbfiddle: http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=c058994c2f5f3d99b212f06e1dae9fd3

    Consulta original

    Table 'Worktable'. Scan count 3, logical reads 28001, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table '#Example____________________________________________________________________________________________________________0000000000CB'. Scan count 1, logical reads 43, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 31 ms,  elapsed time = 31 ms.
    

    vs top with tiesem uma expressão de tabela comum

    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table '#Example____________________________________________________________________________________________________________0000000000CB'. Scan count 1, logical reads 43, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 16 ms,  elapsed time = 15 ms.
    
    • 4
  5. John Eisbrener
    2017-04-15T12:19:39+08:002017-04-15T12:19:39+08:00

    Então eu fiz algumas análises sobre as várias abordagens postadas até agora e, no meu ambiente, parece que a abordagem de Daniel vence consistentemente nos tempos de execução. Surpreendentemente (para mim) a terceira abordagem CROSS APPLY do sp_BlitzErik não ficou muito atrás. Aqui estão as saídas, se alguém estiver interessado, mas obrigado a TON por todas as abordagens alternativas. Aprendi mais pesquisando as respostas sobre essa pergunta do que há muito tempo!

    Windowed Function - baseline metric
    
    (10406 row(s) affected)
    Table 'DateDim'. Scan count 9, logical reads 791, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'TableFact'. Scan count 9, logical reads 140181, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 89815, logical reads 42553550, physical reads 0, read-ahead reads 84586, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table01Dim'. Scan count 9, logical reads 7688, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table02Dim'. Scan count 9, logical reads 7819, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 87753 ms,  elapsed time = 13031 ms.
    Warning: Null value is eliminated by an aggregate or other SET operation.
    
    
    Basic Aggregated Subquery - Daniel Hutmacher
    
    (10406 row(s) affected)
    Table 'DateDim'. Scan count 18, logical reads 1194, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'TableFact'. Scan count 18, logical reads 280362, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Workfile'. Scan count 48, logical reads 82408, physical reads 9629, read-ahead reads 72779, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 89791, logical reads 6861425, physical reads 0, read-ahead reads 14565, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table01Dim'. Scan count 9, logical reads 7688, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table02Dim'. Scan count 18, logical reads 15726, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 40527 ms,  elapsed time = 6182 ms.
    Warning: Null value is eliminated by an aggregate or other SET operation.
    
    
    CROSS APPLY Operation A - sp_BlitzErik
    
    (10406 row(s) affected)
    Table 'DateDim'. Scan count 9, logical reads 6199331, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'TableFact'. Scan count 3099273, logical reads 12844012, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table01Dim'. Scan count 3109676, logical reads 9350502, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table02Dim'. Scan count 3109676, logical reads 9482456, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 132632 ms,  elapsed time = 20955 ms.
    
    
    CROSS APPLY Operation C - sp_BlitzErik
    
    (10406 row(s) affected)
    Table 'DateDim'. Scan count 18, logical reads 1194, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'TableFact'. Scan count 18, logical reads 280362, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Workfile'. Scan count 56, logical reads 92800, physical reads 10872, read-ahead reads 81928, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 89791, logical reads 6861425, physical reads 0, read-ahead reads 14563, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table01Dim'. Scan count 18, logical reads 15376, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table02Dim'. Scan count 18, logical reads 15726, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 46082 ms,  elapsed time = 6804 ms.
    Warning: Null value is eliminated by an aggregate or other SET operation.
    
    
    TOP 1 WITH TIES - B - SqlZim
    
    (10406 row(s) affected)
    Table 'DateDim'. Scan count 9, logical reads 791, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'TableFact'. Scan count 9, logical reads 140181, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Worktable'. Scan count 89791, logical reads 6866304, physical reads 0, read-ahead reads 93468, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table01Dim'. Scan count 9, logical reads 7688, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'Table02Dim'. Scan count 9, logical reads 7835, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
     SQL Server Execution Times:
       CPU time = 79406 ms,  elapsed time = 15852 ms.
    
    • 4

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve