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-70834

Dirk Boer's questions

Martin Hope
Dirk Boer
Asked: 2024-02-29 07:16:01 +0800 CST

Por que Ignorar chaves duplicadas não é permitido em uma chave exclusiva?

  • 5

Se bem entendi esta resposta, a diferença entre with Indexon Is Unqiuee a Unique Keyé principalmente cosmética.

Na interface MSSQL, quando mudo para uma chave exclusiva, ela Ignore Duplicate Keysé desativada.

Estou entendendo algo errado? Eu gostaria de usar Ignore Duplicate Keysneste caso. Quais são as consequências quando faço um Indexwith Is Uniqueversus a Unique Key.

Digite Indexcom Is Unique(menu suspenso ativado):

Indexar com IsUnique ativado

Tipo Unique Key(menu suspenso desativado):

Chave única

index
  • 1 respostas
  • 35 Views
Martin Hope
Dirk Boer
Asked: 2023-11-01 22:09:19 +0800 CST

As implementações do SQL (ou pelo menos do SQL Azure) ignoram dados duplicados óbvios com junções ao retornar dados?

  • 6

Digamos que eu tenha:

  • tabela A muito ampla onde preciso de todas as colunas
  • que preciso juntar a uma pequena tabela B que possui MUITAS linhas.

É claro que quando eu uno essas duas tabelas, recebo todo o conteúdo de A para cada linha de B.

Isso está sendo otimizado internamente ou todos esses dados estão sendo enviados pela rede?

Porque se for a última coisa, preciso de muito pouco esforço para juntar manualmente na memória neste caso muito específico.

Exemplo:

SELECT ColumnA1, ColumnA2, ColumnA3, ColumnB1 
FROM TableA 
JOIN TableB ON TableB.Id = TableA.TableBId

Resultando em dados:

ColumnA1    ColumnA2    ColumnA3        ColumnB1 
------------------------------------------------
LargeTextA  LargeTextB  LargeTextC      1
LargeTextA  LargeTextB  LargeTextC      2
LargeTextA  LargeTextB  LargeTextC      3
LargeTextA  LargeTextB  LargeTextC      [1.000.000 times more]

LargeTextA, LargeTextB e LargeTextC serão transmitidos 1.000.000 de vezes na linha ou serão enviados apenas uma vez porque saberá que serão apenas dados repetidos?

sql-server
  • 1 respostas
  • 60 Views
Martin Hope
Dirk Boer
Asked: 2021-10-15 14:43:10 +0800 CST

Escolha entre dois antipadrões: Overdesign versus Over-optimization

  • 0

Às vezes eu preciso manter o estado, como um sinalizador IsVerified.

Existem duas opções:

booleano (ou bit)

Vantagem: menor e mais rápido

...mas em teoria "super-otimização" e, portanto, um argumento ruim.

data e hora anuláveis

IsVerifiedOn -> NULL não é verificado, qualquer valor significa verificado.

Vantagem: você pode ter uma situação no futuro em que de repente se deparar com um caso em que é útil que você realmente saiba quando essa conta foi verificada.

...mas em teoria "sobre design" (You Are't Gonna Need It) e você só deve adicionar isso quando realmente precisar.

Então, entre esses dois males? Qual é o melhor para começar?

database-design performance
  • 2 respostas
  • 63 Views
Martin Hope
Dirk Boer
Asked: 2021-04-10 19:57:27 +0800 CST

Por que você não pode adicionar uma identidade a uma coluna existente no SQL Server?

  • 1

O que há de tão especial em uma coluna de identidade ?

Tenho certeza de que há um motivo válido, mas estou tentando entender melhor o SQL.

Então, o que há de tão especial em uma coluna de identidade que não pode ser facilmente adicionada em retrospectiva?

Por que isso não é apenas um único sinalizador int/bigint em algum lugar que está sendo incrementado toda vez que você insere uma nova linha?

Existe algo fisicamente armazenado por linha que este é um processo difícil?

sql-server alter-table
  • 5 respostas
  • 466 Views
Martin Hope
Dirk Boer
Asked: 2021-01-30 03:11:43 +0800 CST

Como não há unsigned int no SQL Server, uma semente de identidade de -2.147.483.648 não faz mais sentido para tabelas grandes?

  • 8

Acabei de pensar que a Semente de Identidade padrão é 1. Tenho algumas tabelas que sei que chegarão aos bilhões em um certo ponto. Não faria mais sentido começar em int.Min(-2.147.483.648) para essas tabelas?

Isso pode fazer a diferença de migrar sua chave para bigintem 4 anos ou em 8 anos. Pode ser relevante o suficiente.

Isso é comum? Parece estranho. Existe alguma coisa que eu estou perdendo?

sql-server identity
  • 2 respostas
  • 1367 Views
Martin Hope
Dirk Boer
Asked: 2021-01-27 09:13:37 +0800 CST

Economize desempenho com grande atualização no índice com coluna incluída

  • 2
Points
------------------
PK  QuestionId  int (+30.000.000 distinct values)
PK  EventId     int (large batches where 80.000 rows have the same EventId)
    Value       smallint

A tabela tem cerca de 40 milhões de linhas e apresenta problemas de desempenho.

Existem duas dúvidas principais:

Em QuestionId :

  • cerca de 30 milhões de QuestionIdvalores diferentes (muita variação)
  • muitas consultas durante os horários de pico (vários milhares por minuto)

Em EventId :

  • haverá atualizações em lote de +150.000 linhas where EventId=Xpara definir Value=NULLdurante os momentos de muito movimento.

Portanto, meu primeiro pensamento para obter o melhor desempenho foi fazer EventId,QuestionIdo ClusteredIndex para que a atualização em lote possa encontrar facilmente todos os EventId próximos uns dos outros e atualizar diretamente os valores.

Meu segundo pensamento foi adicionar um índice com uma QuestionIdcoluna incluída Value para que ele possa ler o valor diretamente do índice ( EventIdé irrelevante neste caso).

Mas então pensei: o Índice Agrupado importaria? Como o Valor da coluna Incluído do Índice também precisa ser atualizado durante a atualização do lote.

  • Embora não negocie o desempenho da consulta - é possível obter a atualização do lote rapidamente (alguns segundos) ou tenho que aceitar que esse processo sempre será lento sem atualizar o hardware.
  • Quaisquer outros pensamentos qual seria a melhor maneira de definir o ClusteredIndex / Indexes?

Eu sei que, em teoria, eu deveria testar tudo e medi-lo, mas o site está ativo e é muito usado.

Sou um desenvolvedor solo e não tenho recursos para contratar alguém. Quaisquer suposições e pensamentos estimados sobre isso seriam realmente úteis, pois isso já me dá a direção certa!

sql-server performance
  • 1 respostas
  • 494 Views
Martin Hope
Dirk Boer
Asked: 2020-12-30 01:47:25 +0800 CST

Fragmentação de índice clusterizado vs índice com fragmentação de colunas incluídas

  • 7

Eu tenho uma tabela relativamente grande (para mim) com 40 milhões de linhas que deve crescer para 80 a 120 milhões de linhas em um período de duas semanas (durante uma campanha).

Tip
--------------
Id          int (clustered index)
UserId      int
TipIndex    smallint
Value       binary(8)
LastChanged datetime2(3)
  • cada usuário tem entre 1 a 400 pontas que serão inseridas aleatoriamente durante este período
  • UserId + TipIndex é único
  • Eu nunca consulto dicas diretamente na chave de identidade (id)
  • 99% das vezes que consulto no UserId
  • Eu preciso de todas as colunas
  • Costumo consultar 1 UserId (por visualização de página), às vezes em lotes de 10.000s para estatísticas
  • este é um site de alto tráfego durante esse período e deve ser capaz de lidar com 30.000 consultas no UserId por minuto
  • Id é no momento meu Clustered Index, porque li que leva à menor fragmentação.

Então estou hospedando no SQL Azure e o Azure já recomendo adicionar um Index com colunas inclusas. Sempre hesitei em usar UserId,TipIndex como um índice clusterizado, pois as dicas serão adicionadas aleatoriamente. O que significa que tenho medo de grandes problemas de fragmentação etc.

Minhas perguntas:

  • Um índice com colunas incluídas não tem exatamente o mesmo problema?
  • Uma tabela com colunas incluídas não é exatamente o mesmo que uma "tabela sombra" com os mesmos problemas de fragmentação?
  • Devo migrar para usar UserId, TipIndex como ClusteredIndex em vez de Id?
  • Como evitar a fragmentação?

Eu sei que no final a resposta é sempre "depende" ou que eu deveria medir. Mas como sou um desenvolvedor solo e não tenho muitos recursos, espero alguém com mais experiência que tenha um pressentimento para isso, então minhas primeiras tentativas têm uma chance maior de ir na direção certa.

sql-server performance
  • 2 respostas
  • 297 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