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 / 106470
Accepted
usr
usr
Asked: 2015-07-10 06:49:22 +0800 CST2015-07-10 06:49:22 +0800 CST 2015-07-10 06:49:22 +0800 CST

Plano de execução para COMPUTE BY

  • 772

Eu entendo que o COMPUTE BYrecurso está obsoleto. Por curiosidade, gostaria de saber como o processador de consulta executa uma COMPUTE BYconsulta. O plano de execução não contém nenhuma dica:

insira a descrição da imagem aqui

Como o processador de consultas é executado COMPUTE BYe como posso obter um plano de execução preciso?

Aqui está um pouco de T-SQL para brincar:

 create table employee(
    ID          int,
    name        nvarchar (10),
    salary      int,
    start_date  datetime,
    city        nvarchar (10),
    region      char (1))
GO
insert into employee (ID, name,    salary, start_date, city,       region)
              values (1,  'Jason', 40420,  '02/01/94', 'New York', 'W')

insert into employee (ID, name,    salary, start_date, city,       region)
              values (2,  'Robert',14420,  '01/02/95', 'Vancouver','N')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (3,  'Celia', 24020,  '12/03/96', 'Toronto',  'W')

insert into employee (ID, name,    salary, start_date, city,       region)
              values (4,  'Linda', 40620,  '11/04/97', 'New York', 'N')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (5,  'David', 80026,  '10/05/98', 'Vancouver','W')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (6,  'James', 70060,  '09/06/99', 'Toronto',  'N')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (7,  'Alison',90620,  '08/07/00', 'New York', 'W')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (8,  'Chris', 26020,  '07/08/01', 'Vancouver','N')
GO

insert into employee (ID, name,    salary, start_date, city,       region)
              values (9,  'Mary',  60020,  '06/09/02', 'Toronto',  'W')
GO

select * from employee
GO
/*
ID          name       salary      start_date              city       region
----------- ---------- ----------- ----------------------- ---------- ------
          1 Jason            40420 1994-02-01 00:00:00.000 New York   W
          2 Robert           14420 1995-01-02 00:00:00.000 Vancouver  N
          3 Celia            24020 1996-12-03 00:00:00.000 Toronto    W
          4 Linda            40620 1997-11-04 00:00:00.000 New York   N
          5 David            80026 1998-10-05 00:00:00.000 Vancouver  W
          6 James            70060 1999-09-06 00:00:00.000 Toronto    N
          7 Alison           90620 2000-08-07 00:00:00.000 New York   W
          8 Chris            26020 2001-07-08 00:00:00.000 Vancouver  N
          9 Mary             60020 2002-06-09 00:00:00.000 Toronto    W
*/


-- COMPUTE BY
SELECT salary, Name
FROM Employee
ORDER BY ID, Name
COMPUTE SUM(Salary)
GO

/*
salary      Name
----------- ----------
      40420 Jason
      14420 Robert
      24020 Celia
      40620 Linda
      80026 David
      70060 James
      90620 Alison
      26020 Chris
      60020 Mary
sum
===========
     446226
*/

GO

drop table employee

( Fonte )

Os resultados deste single SELECTsão:

insira a descrição da imagem aqui

sql-server t-sql
  • 1 1 respostas
  • 62 Views

1 respostas

  • Voted
  1. Best Answer
    Paul White
    2015-07-13T09:13:32+08:002015-07-13T09:13:32+08:00

    Como o processador de consulta executa COMPUTE BY?

    É uma sequência codificada de operações no topo da árvore de execução. Há um acúmulo de fluxo simples (daí o requisito de ordenação), alguma lógica para detectar o início de um novo grupo, um pouco de computação e cópia de valor de dados e chamadas diretas para construir os conjuntos de resultados TDS alternativos por grupo. Alguns exemplos de pilhas de chamadas de uma consulta usando COMPUTE BYsão mostrados abaixo:

    Acumulação

    copiando

    Geração alternativa do conjunto de resultados do TDS

    e como posso obter um plano de execução preciso?

    Você não pode, porque COMPUTE BYnão é implementado da mesma forma que outras operações do plano. O suporte de substituição ROLLUPusa a estrutura de execução regular, fornecendo informações de plano de execução automaticamente. Um benefício adicional ROLLUPé que ele não usa conjuntos de resultados TDS alternativos, proporcionando melhor compatibilidade com o cliente. Em suma, ninguém vai perder COMPUTE.

    • 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