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 / 112856
Accepted
Zoinky
Zoinky
Asked: 2015-09-02 08:14:15 +0800 CST2015-09-02 08:14:15 +0800 CST 2015-09-02 08:14:15 +0800 CST

Totais (somas/contagens) em várias tabelas filho otimização de consulta

  • 772

Temos 12 tipos de despesas em nosso banco de dados, algumas com dados bastante diferentes menos os campos Valor. Temos vários locais no aplicativo e relatórios que exigem totais de despesas únicas e múltiplas e contagens por tipo de despesa e totais gerais. No final, queremos uma View para todas essas chamadas, mas estamos abertos para usar um procedimento armazenado.

Analisamos várias alternativas para isso e descobrimos que um CTE nos permite obter todos os dados necessários sem o uso de tabelas temporárias. O uso de junções não funciona, pois vimos registros sendo replicados ou removidos, não importa o que tentamos.

Anexei um subconjunto das tabelas de despesas e a consulta que inclui o CTE. Alguém tem uma alternativa melhor que essa? Algo mais rápido? Estamos abordando esse 'achatamento' apropriadamente?

Observe que o plano de execução é o mesmo para esta consulta, seja uma View ou um Proc, e o Proc parece levar o dobro do tempo para ser executado.

Abaixo está o código

WITH pe AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM PettyExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
),hpe AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM HirePremisesExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), ae AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM AdvertisingExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), se AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM ServiceExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), gse AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM GoodsSuppliedExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), thve AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM TravelHireVehicleExpenses 
WHERE IsDisputed = 0 AND 
IsUndisputed = 0
group by EventRegistrationId

)
select
distinct eer.EventRegistrationId
--Petty Expense
,ISNULL(pe.AmountPaidTotal,0) as PettyExpenseAmountPaid
,ISNULL(pe.CommercialValueAmountTotal,0) as PettyExpenseCommercial
,ISNULL(pe.ExpenseCount,0) as PettyExpenseCount
--Hire On Premise Expense
,ISNULL(hpe.AmountPaidTotal,0) as HireOnPremisesExpenseAmountPaid
,ISNULL(hpe.CommercialValueAmountTotal,0) as HireOnPremisesExpenseCommercial
,ISNULL(hpe.ExpenseCount,0) as HireOnPremisesExpenseCount
--Advertising Expense
,ISNULL(ae.AmountPaidTotal,0) as AdvertisingExpenseAmountPaid
,ISNULL(ae.CommercialValueAmountTotal,0) as AdvertisingExpenseCommercial
,ISNULL(ae.ExpenseCount,0) as AdvertisingExpenseExpenseCount
--Services Expense
,ISNULL(se.AmountPaidTotal,0) as ServiceExpenseAmountPaid
,ISNULL(se.CommercialValueAmountTotal,0) as ServiceExpenseCommercial
,ISNULL(se.ExpenseCount,0) as ServiceExpenseExpenseCount
--Goods Supplied Expense
,ISNULL(gse.AmountPaidTotal,0) as GoodsSuppliedExpenseAmountPaid
,ISNULL(gse.CommercialValueAmountTotal,0) as GoodsSuppliedExpenseCommercial
,ISNULL(gse.ExpenseCount,0) as GoodsSuppliedExpenseExpenseCount
--Travel and Vehicle Expense
,ISNULL(thve.AmountPaidTotal,0) as TravelVehicleExpenseAmountPaid
,ISNULL(thve.CommercialValueAmountTotal,0) as TravelVehicleExpenseCommercial
,ISNULL(thve.ExpenseCount,0) as TravelVehicleExpenseExpenseCount
--All Expenses
,ISNULL(pe.AmountPaidTotal,0) 
    + ISNULL(hpe.AmountPaidTotal,0)
    + ISNULL(ae.AmountPaidTotal,0) 
    + ISNULL(se.AmountPaidTotal,0)
    + ISNULL(gse.AmountPaidTotal,0) 
    + ISNULL(thve.AmountPaidTotal,0) as AllExpenseAmountPaidTotal
,ISNULL(pe.CommercialValueAmountTotal,0) 
    + ISNULL(hpe.CommercialValueAmountTotal,0)
    + ISNULL(ae.CommercialValueAmountTotal,0) 
    + ISNULL(se.CommercialValueAmountTotal,0)
    + ISNULL(gse.CommercialValueAmountTotal,0) 
    + ISNULL(thve.CommercialValueAmountTotal,0) as AllExpenseCommercialValueTotal
,ISNULL(pe.ExpenseCount,0) 
    + ISNULL(hpe.ExpenseCount,0)
    + ISNULL(ae.ExpenseCount,0) 
    + ISNULL(se.ExpenseCount,0)
    + ISNULL(gse.ExpenseCount,0) 
    + ISNULL(thve.ExpenseCount,0) as AllExpenseCount
from EventRegistrations eer
left join pe on pe.EventRegistrationId = eer.EventRegistrationId
left join hpe on hpe.EventRegistrationId = eer.EventRegistrationId
left join ae on ae.EventRegistrationId = eer.EventRegistrationId 
left join se on se.EventRegistrationId = eer.EventRegistrationId
left join gse on gse.EventRegistrationId = eer.EventRegistrationId
left join thve on thve.EventRegistrationId = eer.EventRegistrationId

ATUALIZAR:

Aqui está o esquema db com inserções para aqueles que estão interessados ​​em vê-lo ao vivo.

Esquema de banco de dados e inserções

Usando o SQL Server 2014 Standard, alterei o esquema/inserções db para um arquivo (muito grande para aqui) que contém mais inserções, bem como plano de execução e resultados carregados (2 imagens ficam lado a lado para mostrar todas as colunas retornadas)

plano de execução

resultados 1

resultados continuaram

sql-server sql-server-2014
  • 3 3 respostas
  • 216 Views

3 respostas

  • Voted
  1. spaghettidba
    2015-09-02T15:16:54+08:002015-09-02T15:16:54+08:00

    Preenchi o banco de dados com MUITOS dados e fiz algumas descobertas interessantes.

    O uso desses índices filtrados retorna resultados em cerca de 7 segundos em meu sistema, em comparação com mais de 1 minuto com os índices não filtrados sugeridos por Kin.

    create nonclustered index [fnc_PettyExpenses] on [dbo].[PettyExpenses] (
            EventRegistrationId
        ) include (
         AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    
    create nonclustered index [fnc_HirePremisesExpenses] on [dbo].[HirePremisesExpenses] (
            EventRegistrationId
        ) include (
        AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    
    create nonclustered index [fnc_AdvertisingExpenses] on [dbo].[AdvertisingExpenses] (
            EventRegistrationId
        ) include (
         AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    
    create nonclustered index [fnc_ServiceExpenses] on [dbo].[ServiceExpenses] (
            EventRegistrationId
        ) include (
        AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    
    create nonclustered index [fnc_GoodsSuppliedExpenses] on [dbo].[GoodsSuppliedExpenses] (
            EventRegistrationId
        ) include (
         AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    
    create nonclustered index [fnc_TravelHireVehicleExpenses] on [dbo].[TravelHireVehicleExpenses] (
            EventRegistrationId
        ) include (
         AmountPaid
        ,CommercialValueAmount
        )
    WHERE [IsDisputed] = 0 AND [IsUndisputed] = 0;
    go
    

    Mais o índice recomendado por Kin (que você provavelmente já possui, pois parece ser a chave primária da tabela):

    create nonclustered index [nc_EventRegistrations] on dbo.EventRegistrations (EventRegistrationId);
    

    Acontece que não existe um vencedor claro em termos de tempo decorrido.

    Sua forma de consulta obtém um plano paralelo muito bom usando MERGE JOINs.

    plano paralelo

    A consulta usando UNION ALLs obtém um plano serial muito mais simples.

    plano de série

    No que diz respeito às estatísticas de IO, parece que o plano serial é um pouco mais eficiente que o plano paralelo:

    Estatísticas IO do plano paralelo Estatísticas IO do plano paralelo

    Estatísticas de E/S do plano serial Estatísticas de E/S do plano serial

    Os tempos decorridos são muito semelhantes, mas o tempo de CPU é maior para o plano paralelo.

    Lembre-se de que os índices filtrados têm algumas limitações , portanto, podem não ser a melhor escolha para você.

    • 3
  2. Erik
    2015-09-02T09:13:35+08:002015-09-02T09:13:35+08:00

    Dependendo de suas necessidades, a resposta pode ser converter cada um CTEem seu exemplo em uma exibição indexada . Isso economizaria as agregações em cada consulta às custas de maior armazenamento e operações CRUD um pouco mais lentas. O formato básico seria algo como:

    CREATE VIEW dbo.AggregatedPettyExpenses 
        WITH SCHEMABINDING AS
        SELECT 
            EventRegistrationId
            ,SUM(AmountPaid)            as AmountPaidTotal
            ,SUM(CommercialValueAmount) as CommercialValueAmountTotal
            ,SUM(CASE WHEN AmountPaid IS NOT NULL THEN 1 ELSE 0 END) as ExpenseCount -- Hack for your count logic
            ,COUNT_BIG(*) AS COUNT
        FROM PettyExpenses 
        WHERE IsDisputed = 0 AND IsUndisputed = 0
        GROUP BY EventRegistrationId
    
        CREATE UNIQUE CLUSTERED INDEX [IDX_dbo_AggregatedPettyExpenses_EventRegistrationId] 
            ON dbo.AggregatedPettyExpenses(EventRegistrationId);
    

    Repita o mesmo padrão acima para cada um CTE. Então você teria apenas um VIEWgosto em seu exemplo, mas você LEFT JOINpara o novo INDEXED VIEW's em vez do CTE's.

    Como você mencionou que está usando a Standard Edition, vale a pena saber que você terá que usar a dica de consultaWITH (NOEXPAND) se quiser que as exibições indexadas se comportem como exibições indexadas em vez de exibições normais. Aliás, isso também é verdade atualmente com os bancos de dados Azure Sql Server.

    • 2
  3. Best Answer
    Kin Shah
    2015-09-02T12:59:04+08:002015-09-02T12:59:04+08:00

    Alguém tem uma alternativa melhor que essa? Algo mais rápido?

    Sua consulta original fará varreduras de tabela para todas as 6 tabelas.

    Você pode remover o distinct eer.EventRegistrationIde usar GROUP BY eer.EventRegistrationId, resto tudo permanece o mesmo.

    Os índices abaixo ajudarão você a evitar TABLE SCANe farão um INDEX SEEK:

    create nonclustered index [nc_PettyExpenses] on [dbo].[PettyExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_HirePremisesExpenses] on [dbo].[HirePremisesExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_AdvertisingExpenses] on [dbo].[AdvertisingExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_ServiceExpenses] on [dbo].[ServiceExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_GoodsSuppliedExpenses] on [dbo].[GoodsSuppliedExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_TravelHireVehicleExpenses] on [dbo].[TravelHireVehicleExpenses] (
        [IsDisputed]
        ,[IsUndisputed]
        ) include (
        EventRegistrationId
        ,AmountPaid
        ,CommercialValueAmount
        )
    go
    
    create nonclustered index [nc_EventRegistrations] on dbo.EventRegistrations (EventRegistrationId);
    

    COM OPTION (MAXDOP 1)+ Índices Acima

    plano de consulta

    insira a descrição da imagem aqui

    saída de E/S de estatísticas

    insira a descrição da imagem aqui


    SEM OPTION (MAXDOP 1)+ Índices Acima

    Plano de consulta :

    insira a descrição da imagem aqui

    Estatísticas de saída IO

    insira a descrição da imagem aqui

    ╔═════════════════════════════════╦═════╦═════════════╗
    ║             Option              ║ CPU ║ ElapsedTime ║
    ╠═════════════════════════════════╬═════╬═════════════╣
    ║ Plain - As you posted your code ║  16 ║          12 ║
    ║ Without MAXDOP 1 + Indexes      ║  62 ║          11 ║
    ║ With MAXDOP 1 + Indexes         ║   0 ║           7 ║ <== Winner !!
    ╚═════════════════════════════════╩═════╩═════════════╝
    

    Abaixo está o código para completar:

    /*
    dbcc freeproccache
    dbcc dropcleanbuffers
    
    */
    set nocount on
    set statistics io on
    set statistics time on;
    
    with pe
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from PettyExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
        ,hpe
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from HirePremisesExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
        ,ae
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from AdvertisingExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
        ,se
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from ServiceExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
        ,gse
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from GoodsSuppliedExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
        ,thve
    as (
        select EventRegistrationId
            ,sum(AmountPaid) as AmountPaidTotal
            ,sum(CommercialValueAmount) as CommercialValueAmountTotal
            ,count(1) as ExpenseCount
        from TravelHireVehicleExpenses
        where IsDisputed = 0
            and IsUndisputed = 0
        group by EventRegistrationId
        )
    select eer.EventRegistrationId
        --Petty Expense
        ,ISNULL(SUM(case e.src
                    when 'pe'
                        then e.AmountPaidTotal
                    end), 0) as PettyExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'pe'
                        then e.CommercialValueAmountTotal
                    end), 0) as PettyExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'pe'
                        then e.ExpenseCount
                    end), 0) as PettyExpenseCount
        --Hire On Premise Expense
        ,ISNULL(SUM(case e.src
                    when 'hpe'
                        then e.AmountPaidTotal
                    end), 0) as HireOnPremisesExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'hpe'
                        then e.CommercialValueAmountTotal
                    end), 0) as HireOnPremisesExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'hpe'
                        then e.ExpenseCount
                    end), 0) as HireOnPremisesExpenseCount
        --Advertising Expense
        ,ISNULL(SUM(case e.src
                    when 'ae'
                        then e.AmountPaidTotal
                    end), 0) as AdvertisingExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'ae'
                        then e.CommercialValueAmountTotal
                    end), 0) as AdvertisingExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'ae'
                        then e.ExpenseCount
                    end), 0) as AdvertisingExpenseExpenseCount
        --Services Expense
        ,ISNULL(SUM(case e.src
                    when 'se'
                        then e.AmountPaidTotal
                    end), 0) as ServiceExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'se'
                        then e.CommercialValueAmountTotal
                    end), 0) as ServiceExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'se'
                        then e.ExpenseCount
                    end), 0) as ServiceExpenseExpenseCount
        --Goods Supplied Expense
        ,ISNULL(SUM(case e.src
                    when 'gse'
                        then e.AmountPaidTotal
                    end), 0) as GoodsSuppliedExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'gse'
                        then e.CommercialValueAmountTotal
                    end), 0) as GoodsSuppliedExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'gse'
                        then e.ExpenseCount
                    end), 0) as GoodsSuppliedExpenseExpenseCount
        --Travel and Vehicle Expense
        ,ISNULL(SUM(case e.src
                    when 'thve'
                        then e.AmountPaidTotal
                    end), 0) as TravelVehicleExpenseAmountPaid
        ,ISNULL(SUM(case e.src
                    when 'thve'
                        then e.CommercialValueAmountTotal
                    end), 0) as TravelVehicleExpenseCommercial
        ,ISNULL(SUM(case e.src
                    when 'thve'
                        then e.ExpenseCount
                    end), 0) as TravelVehicleExpenseExpenseCount
        --All Expenses
        ,ISNULL(SUM(e.AmountPaidTotal), 0) as AllExpenseAmountPaidTotal
        ,ISNULL(SUM(e.CommercialValueAmountTotal), 0) as AllExpenseCommercialValueTotal
        ,ISNULL(SUM(e.ExpenseCount), 0) as AllExpenseCount
    from EventRegistrations eer
    left join (
        select 'pe' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from pe
    
        union all
    
        select 'hpe' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from hpe
    
        union all
    
        select 'ae' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from ae
    
        union all
    
        select 'se' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from se
    
        union all
    
        select 'gse' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from gse
    
        union all
    
        select 'thve' as src
            ,EventRegistrationId
            ,AmountPaidTotal
            ,CommercialValueAmountTotal
            ,ExpenseCount
        from thve
        ) as e on eer.EventRegistrationId = e.EventRegistrationId
    group by eer.EventRegistrationId --- we removed the distinct and added a group by clause 
    option (maxdop 1)
    
    set statistics io off
    set statistics time off
    

    Observação: você pode falsificar contagens de linhas e contagens de páginas <-- APENAS POR MOTIVOS EDUCACIONAIS

    UPDATE STATISTICS [dbo].[PettyExpenses]             WITH ROWCOUNT = 10000000, pagecount = 10000000
    UPDATE STATISTICS [dbo].[HirePremisesExpenses]      WITH ROWCOUNT = 10000000, pagecount = 10000000
    UPDATE STATISTICS [dbo].[AdvertisingExpenses]       WITH ROWCOUNT = 10000000, pagecount = 10000000
    UPDATE STATISTICS [dbo].[ServiceExpenses]           WITH ROWCOUNT = 10000000, pagecount = 10000000
    UPDATE STATISTICS [dbo].[GoodsSuppliedExpenses]     WITH ROWCOUNT = 10000000, pagecount = 10000000
    UPDATE STATISTICS [dbo].[TravelHireVehicleExpenses] WITH ROWCOUNT = 10000000, pagecount = 10000000
    
    • 2

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