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 / user-6503

IronicMuffin's questions

Martin Hope
IronicMuffin
Asked: 2021-07-10 06:32:24 +0800 CST

Resultados de atualização inesperados no heap usando SET @Variable = Field= @Variable + 1, corrigido com índice clusterizado

  • 5

Estou apenas procurando entender por que isso está acontecendo, e minhas pesquisas no Google estavam falhando. Estamos no SQL Server 2016 SP1.

Esta é a situação: Tabela de fornecedores que gerencia os IDs acompanhando os valores atuais de cada tabela. Uma função pode ser chamada para retornar um bloco de IDs se você estiver fazendo uma inserção.

Então, configuramos uma tabela temporária selecionando da tabela real usando select into(estamos clonando um conjunto de dados para ser reinserido com um conjunto de propriedades diferente).

Em seguida, chamamos a função e obtemos novos ids para o número de registros (ela apenas retorna o ID máximo, então fazemos algumas contas para obter o próximo id).

Em seguida, atualizamos a tabela como tal:

update #temp set @nextId = Id = @nextId + 1

com a expectativa de que ele incremente em um para cada registro e defina os ids.

Em vez disso, o mesmo ID foi definido para cada 4 registros, então seria incrementado e os próximos 4 obteriam o próximo id, etc. Por que a cada 4 registros? O que deu errado?

resultados

Ainda mais divertido, se colocarmos um índice clusterizado na tabela, tudo funciona corretamente.

Tenho certeza que tem a ver com a mesa ser um monte... mas não sei por quê.

Link para o plano .

sql-server update
  • 2 respostas
  • 163 Views
Martin Hope
IronicMuffin
Asked: 2019-07-25 05:36:04 +0800 CST

A Otimização de Correlação de Data do SQL Server só funciona em campos DateTime ou uma Data também funcionará?

  • 4

Pergunto porque este é um recurso mais antigo que descobri recentemente. A documentação menciona DateTime algumas vezes, mas não diz explicitamente que outros tipos de data são compatíveis ou não.

Eu tenho um Data Warehouse que acredito que poderia se beneficiar disso, mas 90% das datas que importam são tipos de data, não DateTime. Estou no SQL 2014, mas informações sobre qualquer versão seriam úteis.

sql-server sql-server-2014
  • 1 respostas
  • 217 Views
Martin Hope
IronicMuffin
Asked: 2019-01-18 08:29:33 +0800 CST

Por que você só pode descartar uma exibição do SQL Server no banco de dados atual?

  • 11

Acabei de perceber isso e estava tendo dificuldade em encontrar uma razão técnica para isso.

As tabelas podem ser eliminadas usando nomes de três partes, mas as visualizações são restritas a nomes de duas partes.

Qual é o raciocínio por trás disso?

sql-server view
  • 1 respostas
  • 330 Views
Martin Hope
IronicMuffin
Asked: 2018-01-10 10:53:26 +0800 CST

Existe uma maneira eficiente de combinar vários cabeçalhos que tenham o mesmo conjunto de detalhes?

  • 1

Aqui está um exemplo do que estou perguntando:

Tabela de detalhes:

HeaderId | DetailId
    1          100
    1          101
    2          100
    2          101
    3          101
    3          102
    3          103

Estou procurando uma estratégia de consulta que me forneça todos os IDs de cabeçalho com o mesmo conjunto de IDs de detalhes para cada um.

Então, no exemplo, eu gostaria que HeaderId 1 e 2 se unissem porque eles têm os mesmos dois registros de detalhes, mas 103 não corresponderia porque tem um terceiro item no conjunto.

A estratégia que estou adotando até agora é usar a STUFFtécnica para criar uma string separada por vírgulas de valores de detalhes, fazer a soma de verificação dessa string e, em seguida, unir o resultado da soma de verificação. Parece estar funcionando, mas não sei como otimizá-lo. Em um conjunto de cerca de 7.000 cabeçalhos, ele retorna em cerca de 6 a 7 segundos.

Aqui está a consulta:

with Details as 
(   
    select distinct t2.HeaderId, 
    checksum(stuff((
        select
            ',' + convert(varchar(15), t2.DetailId)
        from
            DetailTable t2
        where
            t2.HeaderId = t2.HeaderId
        for xml path('')
    ),1,1,'')) as ChkSum
from
      DetailTable t1
)
select
    *
from
    Details t1
        join Details t2
            on t2.ChkSum = t1.ChkSum
            and t2.HeaderId <> t1.HeaderId -- To avoid matching the same record

Então - esta é a abordagem correta? E se for, como posso otimizar? O plano de consulta não tem nada pulando para mim. O maior peso é dado a um carretel de mesa. Além disso, estou tentando fazer disso uma função ou proc, se isso ajudar.

Edit: comecei a pesquisar a divisão relacional, e acho que isso é relevante aqui, mas talvez não no contexto em que estou pensando. Para dar mais contexto, aqui está o caso de negócios que estou tentando resolver.

Eu tenho um conjunto de Promoções que podem ter qualquer número de UPCs neles. Estou tentando encontrar promoções que tenham exatamente o mesmo conjunto de UPCs. Muitas das soluções que estou vendo dependem do uso do count(*). Então - apenas algum contexto para quem está olhando para isso. Obrigado!

sql-server t-sql
  • 4 respostas
  • 116 Views
Martin Hope
IronicMuffin
Asked: 2017-08-05 10:02:19 +0800 CST

Por que o SQL tenta converter linhas que são excluídas pela minha cláusula where?

  • 8

Já me deparei com isso várias vezes e tenho certeza de que há uma boa razão para isso - mas como evitá-lo?

Tenho certeza que tem a ver com as peculiaridades ao redor isnumeric. Em inglês, tenho uma visão que filtra em isnumeric(somefield) = 1. Em seguida, tento consultá-lo usando um intna minha wherecláusula e, como algum outro campo na tabela tem valores de caractere, a coisa toda falha.

Eu criei um violino SQL que mostra o erro.

Tentei fazer um cast/convertno select na view, mas o mecanismo de consulta parece ignorá-lo.

Então - por que isso acontece e existe uma maneira limpa de lidar com isso?

O violino original teve um erro muito semelhante devido à falta de aspas na inserção. Esse não é o problema que eu estava tentando destacar. Corrigi a visão adicionando aspas a todos os valores que estão sendo inseridos.

sql-server view
  • 7 respostas
  • 2810 Views
Martin Hope
IronicMuffin
Asked: 2016-08-05 04:29:57 +0800 CST

Por que o SQL Server pararia de excluir partições apropriadamente?

  • 0

Tenho uma tabela de fatos que será executada com um plano apropriado durante nosso processamento matinal. Ocasionalmente, no final do dia, se eu for consultá-lo, ele terá um plano realmente estranho.

Ao consultar uma tabela particionada por data, você geralmente vê um predicado de busca como este:

boa consulta

Mas, por algum motivo, se transforma nisso:

insira a descrição da imagem aqui

Sim, estou ciente de que existem duas tabelas diferentes mostradas acima. Peguei o bom exemplo de uma tabela configurada de forma semelhante e ele exibe apropriadamente o predicado de busca que eu esperaria.

Ambos são operadores Clustered Index Seek. A atualização das estatísticas não parece ajudar, mas alguma parte dos scripts de manutenção de Ola parece corrigi-lo todas as manhãs.

alguém viu isso antes? Alguma dica sobre como restaurar o bom plano?

sql-server t-sql
  • 1 respostas
  • 64 Views
Martin Hope
IronicMuffin
Asked: 2015-01-16 05:58:35 +0800 CST

Quais estratégias conhecidas, se houver, posso usar para validar uma dimensão de mudança lenta?

  • 4

Tenho uma dimensão de cliente em nosso data warehouse (SSAS 2014 Multidimensional). Ele é configurado como um SCD Tipo II, com apenas os campos Data inicial e Final para rastrear as alterações. (data final nula = atual).

À medida que nossa carga diária é executada e vejo as mudanças fluindo, às vezes me preocupo com a criação de novos registros quando não deveria.

Que tipo de scripts podem ser executados para comparar cada cliente em seu respectivo histórico e garantir que ele esteja sendo alterado adequadamente?

Além disso, e acho que estou abordando o problema de lacunas e ilhas, quais estratégias existem para verificar se as datas de início e término são todas contíguas?

Quero me sentir confiante de que a tabela está relatando dados corretos dia a dia sem se tornar uma fera devido a alguma verificação nula, causando a criação de uma tonelada de registros a cada dia.

Obrigado por qualquer ajuda que você possa oferecer.

ssas data-warehouse
  • 1 respostas
  • 1211 Views
Martin Hope
IronicMuffin
Asked: 2012-07-03 08:33:46 +0800 CST

Soluções para relatórios de um banco de dados estruturado EAV?

  • 5

Configuração existente do SQL Server 2005 com tabela EAV padrão que os usuários desejam dividir com uma ferramenta de BI (Cognos).

Existe alguma esperança de que possamos transformar esses dados em um formato do qual possamos relatar? O Google me levou a acreditar que não há esperança. Eu gostaria de acreditar que algum tipo de solução está por aí.

business-intelligence reporting
  • 2 respostas
  • 991 Views

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