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 / 29891
Accepted
Zane
Zane
Asked: 2012-12-06 12:30:31 +0800 CST2012-12-06 12:30:31 +0800 CST 2012-12-06 12:30:31 +0800 CST

Seleção em linha causando desempenho de consulta incrivelmente lento

  • 772

Eu tenho uma consulta que é usada para preencher uma tabela agregada para fins de relatório. A consulta vem de outro desenvolvedor aqui da empresa em que trabalho, mas é meu trabalho fazê-la rodar rápido. Até agora, todas as minhas primeiras tentativas falharam. Eu tentei várias coisas com esta consulta e é aqui que estou no momento. Já cortei cerca de meia hora do tempo de carregamento, mas estou preso e pensando que provavelmente terei que refazer tudo. Espero que alguém aqui possa ver se estou perdendo alguma coisa e me dê algumas dicas sobre como corrigir essa consulta.

SELECT P.CompanyID,
       P.CompanyName,
       P.StoreID,
       P.StoreName,
       P.ReportDate,
       Isnull((SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS PullNet
               FROM   FactSalesTransaction AS FT
                      LEFT JOIN (SELECT TransactionID,
                                        DimStoreID,
                                        DimBusinessDateID,
                                        Sum(PaymentAmount) AS PaymentAmount
                                 FROM   FactSalesPayment
                                 WHERE  DimPaymentTypeID <> 2
                                        AND ModStatusFlg <> 'D'
                                 GROUP  BY TransactionID,
                                           DimStoreID,
                                           DimBusinessDateID) AS FP
                        ON FP.TransactionID = FT.TransactionID
                           AND FP.DimStoreID = FT.DimStoreID
                      INNER JOIN DimCalendar AS C
                        ON FT.DimBusinessDateID = C.DimCalendarID
                           AND FP.DimBusinessDateID = C.DimCalendarID  AND C.CalendarDate >= '12/4/2012'
               WHERE  FT.DimStoreID = P.DimStoreID
                      AND FT.DimBusinessDateID = P.DimBusinessDateID

                      AND FT.ModStatusFlg <> 'D'), 0) AS StoreCash,
       SR.CashDeposit AS StoreResp,
       SN.StoreNet,
       P.DimEmployeeID AS EmpID,
       P.EmpName,
       P.RegisterID,
       P.PullNumber,
       Isnull((SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS PullNet
               FROM   FactSalesTransaction AS FT
                      LEFT JOIN (SELECT TransactionID,
                                        DimStoreID,
                                        DimBusinessDateID,
                                        Sum(PaymentAmount) AS PaymentAmount
                                 FROM   FactSalesPayment
                                 WHERE  DimPaymentTypeID <> 2
                                        AND ModStatusFlg <> 'D'
                                 GROUP  BY TransactionID,
                                           DimStoreID,
                                           DimBusinessDateID) AS FP
                        ON FP.TransactionID = FT.TransactionID
                           AND FP.DimStoreID = FT.DimStoreID
                      INNER JOIN DimCalendar AS C
                        ON FT.DimBusinessDateID = C.DimCalendarID
                           AND FP.DimBusinessDateID = C.DimCalendarID AND C.CalendarDate >= '12/4/2012'
               WHERE  FT.DimStoreID = P.DimStoreID
                      AND FT.DimRegisterID = P.DimRegisterID

                      AND FT.TransactionDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime
                      AND FT.ModStatusFlg <> 'D'), 0) AS PullCash,
       P.PullResp + Isnull((SELECT Sum(SkimAmount)
                            FROM   FactSkims
                            WHERE  DimStoreID = P.DimStoreID
                                   AND DimRegisterID = P.DimRegisterID
                                   AND SkimDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime), 0) AS PullResp,
       Isnull((SELECT Sum(NetSales) AS PullNet
               FROM   FactSalesTransaction AS FT
                      INNER JOIN DimCalendar AS C
                        ON FT.DimBusinessDateID = C.DimCalendarID AND C.CalendarDate >= '12/4/2012'
               WHERE  DimStoreID = P.DimStoreID
                      AND DimRegisterID = P.DimRegisterID
                      AND TransactionDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime

                      AND ModStatusFlg <> 'D'), 0)                                                             AS PullNet
FROM   (SELECT C.CompanyID,
               C.CompanyName,
               S.StoreID,
               S.StoreName,
               F.DimEmployeeID,
               E.FirstName + ' ' + E.LastName                           AS EmpName,
               CASE
                 WHEN F.PullDrawerStartTime <> '1900-01-01' THEN F.PullDrawerStartTime
                 ELSE Isnull(Cast((SELECT TOP 1 Dateadd(SECOND, 1, PullDrawerEndTime)
                                   FROM   FactPullDrawer
                                   WHERE  PullDrawerEndTime < F.PullDrawerEndTime
                                          AND DimStoreID = F.DimStoreID
                                          AND DimRegisterID = F.DimRegisterID
                                          AND DimBusinessDateID = F.DimBusinessDateID
                                   ORDER  BY PullDrawerEndTime DESC) AS DATETIME), BD.CalendarDate + Isnull(Cast(Cast(ST.SiteSettingValue AS TIME) AS DATETIME), Cast('4:00:00 AM' AS DATETIME)))
               END AS PullDrawerStartTime,
               F.PullDrawerEndTime,
               BD.CalendarDate AS ReportDate,
               R.RegisterID,
               R.DimRegisterID,
               (SELECT Count(PullDrawerEndTime)
                FROM   FactPullDrawer
                WHERE  PullDrawerEndTime < F.PullDrawerEndTime
                       AND DimStoreID = F.DimStoreID
                       AND DimRegisterID = F.DimRegisterID
                       AND DimBusinessDateID = F.DimBusinessDateID) + 1 AS PullNumber,
               Isnull(F.Amount, 0)                                      AS PullResp,
               F.DimStoreID,
               F.DimBusinessDateID
        FROM   FactPullDrawer AS F
               INNER JOIN DimCompany AS C
                 ON C.DimCompanyID = F.DimCompanyID
               INNER JOIN DimStore AS S
                 ON S.DimStoreID = F.DimStoreID
               INNER JOIN DimCalendar AS BD
                 ON BD.DimCalendarID = F.DimBusinessDateID
                    AND BD.CalendarDate >= '12/4/2012'
               INNER JOIN DimEmployee AS E
                 ON F.DimEmployeeID = E.DimEmployeeID
               INNER JOIN DimRegister AS R
                 ON R.DimRegisterID = F.DimRegisterID
               LEFT JOIN DimSiteSettings AS ST
                 ON S.StoreID = ST.StoreID
                    AND C.CompanyID = ST.CompanyID
                    AND ST.SiteSettingFieldID = 1412) AS P
       INNER JOIN (SELECT DimStoreID,
                          DimBusinessDateID,
                          Sum(NetSales) AS StoreNet
                   FROM   FactSalesTransaction
                   WHERE  ModStatusFlg <> 'D'
                   GROUP  BY DimStoreID,
                             DimBusinessDateID) AS SN
         ON SN.DimStoreID = P.DimStoreID
            AND SN.DimBusinessDateID = P.DimBusinessDateID
       INNER JOIN (SELECT CompanyID,
                          StoreID,
                          ReportDate,
                          Sum(ValTotal) AS CashDeposit
                   FROM   AgtAccountingReport
                   WHERE  ReportCatOrder = 7
                          AND ReportElementOrder < 100
                          AND ReportElementOrder NOT IN ( 7, 9, 10, 16,17, 18, 19, 20, 21 )
                          AND ReportDate >= '10/28/2012'
                   GROUP  BY CompanyID,
                             StoreID,
                             ReportDate) AS SR
         ON SR.CompanyID = P.CompanyID
            AND SR.StoreID = P.StoreID
            AND SR.ReportDate = P.ReportDate 

Estou pensando em todos os aninhados SELECT, e é por isso que pensei em começar do zero. Qualquer ajuda seria apreciada.

sql-server sql-server-2008
  • 2 2 respostas
  • 7366 Views

2 respostas

  • Voted
  1. Best Answer
    Zane
    2012-12-13T06:46:51+08:002012-12-13T06:46:51+08:00

    Ok, então foi isso que eu realmente fiz para fazer essa consulta que costumava ser executada em cerca de uma hora e meia em menos de um minuto. Primeiro eu fiz um pouco mais de escavação para ver exatamente o que isso estava fazendo. Existem algumas subseleções importantes na parte mais externa da consulta. Eles se parecem com isso.

    Isnull((SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS PullNet
                   FROM   FactSalesTransaction AS FT
                          LEFT JOIN (SELECT TransactionID,
                                            DimStoreID,
                                            DimBusinessDateID,
                                            Sum(PaymentAmount) AS PaymentAmount
                                     FROM   FactSalesPayment
                                     WHERE  DimPaymentTypeID <> 2
                                            AND ModStatusFlg <> 'D'
                                     GROUP  BY TransactionID,
                                               DimStoreID,
                                               DimBusinessDateID) AS FP
                            ON FP.TransactionID = FT.TransactionID
                               AND FP.DimStoreID = FT.DimStoreID
                          INNER JOIN DimCalendar AS C
                            ON FT.DimBusinessDateID = C.DimCalendarID
                               AND FP.DimBusinessDateID = C.DimCalendarID  AND C.CalendarDate >= '12/4/2012'
                   WHERE  FT.DimStoreID = P.DimStoreID
                          AND FT.DimBusinessDateID = P.DimBusinessDateID
    
                          AND FT.ModStatusFlg <> 'D'), 0) AS StoreCash
    

    Essas instruções select estão juntando duas das minhas maiores tabelas. FactSalesTransaction(105 milhões de registros) para FactSalesPayment(102 milhões de registros) e está fazendo isso em um select dentro de um select. O que significa essencialmente que, para cada linha retornada, está executando esta consulta. Bem, essa consulta geralmente é executada por cerca de sete dias de dados e, portanto, retorna cerca de 19.000 registros. Isso significa que as 3 sub-seleções para essas tabelas massivas precisam ser executadas 19.000 vezes. Bingo, acho que descobri onde estava minha perda de desempenho. Então mudei essas consultas para uma junção à esquerda. Nada complicado apenas fez com que eles tivessem que entrar apenas uma vez. A junção esquerda para substituir se parece com isso.

    LEFT JOIN (SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS StoreCash, FT.DimStoreID, FT.DimBusinessDateID
                   FROM   FactSalesTransaction AS FT
                          LEFT JOIN (SELECT TransactionID,
                                            DimStoreID,
                                            Sum(PaymentAmount) AS PaymentAmount
                                     FROM   FactSalesPayment
                                     WHERE  DimPaymentTypeID <> 2
                                            AND ModStatusFlg <> 'D'
                                     GROUP  BY TransactionID,
                                               DimStoreID) AS FP
                            ON FP.TransactionID = FT.TransactionID
                               AND FP.DimStoreID = FT.DimStoreID
                   WHERE   FT.ModStatusFlg <> 'D'
                   GROUP BY FT.DimStoreID, FT.DimBusinessDateID)  AS FP
                           ON FP.DimStoreID = P.DimStoreID
                          AND FP.DimBusinessDateID = P.DimBusinessDateID
    

    Como você pode ver, eu realmente não mudei muito no select em si, apenas o alterei para não ser executado 19.000 vezes. A próxima coisa que fiz foi alterar a consulta para um procedimento armazenado em que pega o intervalo de datas do usuário ou, neste caso, o processo ETL fornece (geralmente 7 dias atrás) Selecione em DimCalendar o DimCalendarID para esse dia para que a consulta esteja usando números inteiros de data e hora e, em geral, tem menos registros para ingressar. Fazendo a consulta final ficar assim.

    CREATE PROCEDURE [dbo].[NoneOfYourBusinessWhatINamedIt] 
    @ETLLoadDate DATETIME 
    AS
    BEGIN
    DECLARE @DimCal Int = (SELECT DimCalendarID  FROM DimCalendar WHERE CalendarDate = @ETLLoadDate)
    END
    SELECT P.CompanyID,
           P.CompanyName,
           P.StoreID,
           P.StoreName,
           P.ReportDate,
           FP.StoreCash,
           SR.CashDeposit AS StoreResp,
           SN.StoreNet,
           P.DimEmployeeID AS EmpID,
           P.EmpName,
           P.RegisterID,
           P.PullNumber,
           ISNULL(SUM(PC.PullCash), 0) AS PullCash,
           P.PullResp  AS PullResp,
           ISNULL(SUM(PN.PullNet),0) AS PullNet
    FROM   (SELECT C.CompanyID,
                   C.CompanyName,
                   S.StoreID,
                   S.StoreName,
                   F.DimEmployeeID,
                   E.FirstName + ' ' + E.LastName                           AS EmpName,
                   CASE
                     WHEN F.PullDrawerStartTime <> '1900-01-01' THEN F.PullDrawerStartTime
                     ELSE Isnull(Cast((SELECT TOP 1 Dateadd(SECOND, 1, PullDrawerEndTime)
                                       FROM   FactPullDrawer
                                       WHERE  PullDrawerEndTime < F.PullDrawerEndTime
                                              AND DimStoreID = F.DimStoreID
                                              AND DimRegisterID = F.DimRegisterID
                                              AND DimBusinessDateID = F.DimBusinessDateID
                                              --AND DimBusinessDateID = @DimCal
                                       ORDER  BY PullDrawerEndTime DESC) AS DATETIME), BD.CalendarDate + Isnull(Cast(Cast(ST.SiteSettingValue AS TIME) AS DATETIME), Cast('4:00:00 AM' AS DATETIME)))
                   END                                                      AS PullDrawerStartTime,
                   F.PullDrawerEndTime,
                   BD.CalendarDate                                          AS ReportDate,
                   R.RegisterID,
                   R.DimRegisterID,
                   (SELECT Count(PullDrawerEndTime)
                    FROM   FactPullDrawer
                    WHERE  PullDrawerEndTime < F.PullDrawerEndTime
                           AND DimStoreID = F.DimStoreID
                           AND DimRegisterID = F.DimRegisterID
                           AND DimBusinessDateID = F.DimBusinessDateID) + 1 AS PullNumber,
                   Isnull(F.Amount, 0)                                      AS PullResp,
                   F.DimStoreID,
                   F.DimBusinessDateID
            FROM   FactPullDrawer AS F
                   INNER JOIN DimCompany AS C
                     ON C.DimCompanyID = F.DimCompanyID
                   INNER JOIN DimStore AS S
                     ON S.DimStoreID = F.DimStoreID
                   INNER JOIN DimCalendar AS BD
                     ON BD.DimCalendarID = F.DimBusinessDateID
                   INNER JOIN DimEmployee AS E
                     ON F.DimEmployeeID = E.DimEmployeeID
                   INNER JOIN DimRegister AS R
                     ON R.DimRegisterID = F.DimRegisterID
                   LEFT JOIN DimSiteSettings AS ST
                     ON S.StoreID = ST.StoreID
                        AND C.CompanyID = ST.CompanyID
                        AND ST.SiteSettingFieldID = 1412
              WHERE F.DimBusinessDateID = @DimCal) AS P
           INNER JOIN (SELECT DimStoreID,
                              DimBusinessDateID,
                              Sum(NetSales) AS StoreNet
                       FROM   FactSalesTransaction
                       WHERE  ModStatusFlg <> 'D' AND DimBusinessDateID = @DimCal
                       GROUP  BY DimStoreID,
                                 DimBusinessDateID) AS SN
             ON SN.DimStoreID = P.DimStoreID
                AND SN.DimBusinessDateID = P.DimBusinessDateID
           INNER JOIN (SELECT CompanyID,
                              StoreID,
                              ReportDate,
                              Sum(ValTotal) AS CashDeposit
                       FROM   AgtAccountingReport
                       WHERE  ReportCatOrder = 7
                              AND ReportElementOrder < 100
                              AND ReportElementOrder NOT IN ( 7, 9, 10, 16,
                                                              17, 18, 19, 20, 21 )
                       GROUP  BY CompanyID,
                                 StoreID,
                                 ReportDate) AS SR
             ON SR.CompanyID = P.CompanyID
                AND SR.StoreID = P.StoreID
                AND SR.ReportDate = P.ReportDate 
            LEFT JOIN (SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS StoreCash, FT.DimStoreID, FT.DimBusinessDateID
                   FROM   FactSalesTransaction AS FT
                          LEFT JOIN (SELECT TransactionID,
                                            DimStoreID,
                                            Sum(PaymentAmount) AS PaymentAmount
                                     FROM   FactSalesPayment
                                     WHERE  DimPaymentTypeID <> 2
                                            AND ModStatusFlg <> 'D'
                                            AND DimBusinessDateID = @DimCal
                                     GROUP  BY TransactionID,
                                               DimStoreID) AS FP
                            ON FP.TransactionID = FT.TransactionID
                               AND FP.DimStoreID = FT.DimStoreID
                   WHERE   FT.ModStatusFlg <> 'D' AND DimBusinessDateID = @DimCal
                   GROUP BY FT.DimStoreID, FT.DimBusinessDateID)  AS FP
                           ON FP.DimStoreID = P.DimStoreID
                          AND FP.DimBusinessDateID = P.DimBusinessDateID
    
    
             LEFT JOIN(SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS PullCash, FT.DimStoreID, FT.DimRegisterID, FT.TransactionDateTime
                   FROM   FactSalesTransaction AS FT
                          LEFT JOIN (SELECT TransactionID,
                                            DimStoreID,
                                            Sum(PaymentAmount) AS PaymentAmount
                                     FROM   FactSalesPayment
                                     WHERE  DimPaymentTypeID <> 2
                                            AND ModStatusFlg <> 'D'
                                            AND DimBusinessDateID = @DimCal
                                     GROUP  BY TransactionID,
                                               DimStoreID) AS FP
                            ON FP.TransactionID = FT.TransactionID
                               AND FP.DimStoreID = FT.DimStoreID
                   WHERE  FT.ModStatusFlg <> 'D' AND DimBusinessDateID = @DimCal
                   GROUP BY FT.DimStoreID, FT.DimRegisterID, FT.TransactionDateTime) AS PC
                   ON PC.DimStoreID = P.DimStoreID
                          AND PC.DimRegisterID = P.DimRegisterID
                          AND PC.TransactionDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime     
             LEFT JOIN (SELECT Sum(SkimAmount) as SkimAmount, DimStoreID, DimRegisterID, SkimDateTime
                                FROM   FactSkims
                                GROUP BY DimStoreID, DimRegisterID, SkimDateTime) AS FS
                                ON  FS.DimStoreID = P.DimStoreID
                                       AND FS.DimRegisterID = P.DimRegisterID
                                       AND FS.SkimDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime     
             LEFT JOIN (SELECT Sum(NetSales) AS PullNet, DimStoreID, DimRegisterID, TransactionDateTime
                   FROM   FactSalesTransaction
                   WHERE  ModStatusFlg <> 'D' AND DimBusinessDateID = @DimCal
                   GROUP BY DimStoreID, DimRegisterID, TransactionDateTime) AS PN                              
                   ON PN.DimStoreID = P.DimStoreID
                          AND PN.DimRegisterID = P.DimRegisterID
                          AND PN.TransactionDateTime BETWEEN P.PullDrawerStartTime AND P.PullDrawerEndTime
                          AND PC.TransactionDateTime = PN.TransactionDateTime
           group by P.CompanyID, P.CompanyName, P.StoreID,P.StoreName,P.ReportDate,FP.StoreCash,SR.CashDeposit,SN.StoreNet,P.DimEmployeeID,P.EmpName,P.RegisterID,P.PullNumber,P.PullResp
    

    After doing a test for the speed increase to see if it was worth the index space. I added two Non-Clustered indexes on ModStatusFlag and DimBusinessDateID that included the other columns requested by this query. On both FactSalesTransaction and FactSalesPayment. I could probably do a little more to clean this up and make it run faster however the performance gain would be minimal and there are much bigger fish to fry at the moment. Long story short be careful with your sub-select Statements.

    • 7
  2. Jackofall
    2012-12-06T13:28:09+08:002012-12-06T13:28:09+08:00

    Eu recomendaria fortemente tabelas e índices temporários. Eu recomendaria basicamente o seguinte.

    Usar tabela temporária

    A tabela temporária otimiza extremamente o desempenho da sua consulta. Use int no local onde você está usando a cláusula WHERE em uma tabela grande ou no local da subconsulta.

    Criar índices

    Esp nas colunas que você está usando. Fará as coisas rapidamente.

    Executar subconsultas individuais

    Descubra qual é relativamente mais lento

    Participe de subconsultas e verifique o desempenho ao ingressar

    Descubra qual JOIN cria o problema. Geralmente se resume a um JOIN que leva o tempo todo. Além disso, quando você usa AND com JOIN, isso pode demorar muito em tabelas maiores. Por exemplo, você pode precisar reescrever esta parte de sua consulta da seguinte maneira.

    INNER JOIN DimCalendar AS C
    ON FT.DimBusinessDateID = C.DimCalendarID
    AND FP.DimBusinessDateID = C.DimCalendarID  AND C.CalendarDate >= '12/4/2012'
    WHERE  FT.DimStoreID = P.DimStoreID
    
    I would rewrite this as
    
    INNER JOIN DimCalendar AS C
    ON FT.DimBusinessDateID = C.DimCalendarID
    AND FP.DimBusinessDateID = C.DimCalendarID  
    WHERE  FT.DimStoreID = P.DimStoreID AND C.CalendarDate >= '12/4/2012'
    

    Depois de encontrar o JOIN que retarda seu desempenho

    Use tabela temporária lá para otimizar. Tabelas temporárias funcionam melhor se você estiver usando, digamos, 3k registros em uma tabela de 100k.

    Essas são apenas algumas dicas que podem te ajudar.

    • 0

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

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

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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