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 / 问题

All perguntas(dba)

Martin Hope
Erik Darling
Asked: 2017-03-28 07:30:57 +0800 CST

Quais são as diferentes maneiras de substituir ISNULL() em uma cláusula WHERE que usa apenas valores literais?

  • 62

Do que não se trata:

Esta não é uma pergunta sobre consultas abrangentes que aceitam entrada do usuário ou usam variáveis.

Isso é estritamente sobre consultas onde ISNULL()é usado na WHEREcláusula para substituir NULLvalores por um valor canário para comparação com um predicado e diferentes maneiras de reescrever essas consultas para serem SARGable no SQL Server.

Por que você não se senta ali?

Nossa consulta de exemplo é em uma cópia local do banco de dados Stack Overflow no SQL Server 2016 e procura usuários com NULLidade ou idade < 18.

SELECT COUNT(*)
FROM dbo.Users AS u
WHERE ISNULL(u.Age, 17) < 18;

O plano de consulta mostra um Scan de um índice não clusterizado bastante cuidadoso.

Nozes

O operador de varredura mostra (graças às adições ao XML do plano de execução real nas versões mais recentes do SQL Server) que lemos cada linha ruim.

Nozes

No geral, fazemos 9157 leituras e usamos cerca de meio segundo de tempo de CPU:

Table 'Users'. Scan count 1, logical reads 9157, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 485 ms,  elapsed time = 483 ms.

A pergunta: Quais são as maneiras de reescrever essa consulta para torná-la mais eficiente e talvez até SARGable?

Fique à vontade para dar outras sugestões. Eu não acho que minha resposta seja necessariamente a resposta, e existem pessoas inteligentes o suficiente por aí para apresentar alternativas que podem ser melhores.

Se você quiser jogar no seu próprio computador, acesse aqui para baixar o banco de dados SO .

Obrigado!

sql-server
  • 6 respostas
  • 32180 Views
Martin Hope
AliBZ
Asked: 2015-01-29 15:22:28 +0800 CST

Exportar tabela Postgres como json

  • 62

Existe uma maneira de exportar dados da tabela postgres como json para um arquivo? Eu preciso que a saída seja linha por linha, como:

{'id':1,'name':'David'}
{'id':2,'name':'James'}
...

EDIT: versão postgres: 9.3.4

postgresql postgresql-9.3
  • 8 respostas
  • 101785 Views
Martin Hope
tinlyx
Asked: 2014-12-22 11:44:18 +0800 CST

Como criar uma tabela temporária usando VALUES no PostgreSQL

  • 63

Estou aprendendo PostgreSQL e tentando descobrir como criar uma tabela temporária ou uma WITHdeclaração que possa ser usada no lugar de uma tabela regular, para fins de depuração.

Eu olhei para a documentação para CREATE TABLE e diz que VALUESpode ser usado como uma consulta, mas não dá nenhum exemplo; a documentação da VALUEScláusula vinculada a ela também não tem um exemplo?

Então, eu escrevi um teste simples da seguinte forma:

DROP TABLE IF EXISTS lookup;
CREATE TEMP TABLE lookup (
  key integer,
  val numeric
) AS
VALUES (0,-99999), (1,100);

Mas o PostgreSQL (9.3) está reclamando

erro de sintaxe em ou próximo a "AS"

Minhas perguntas são:

  1. Como posso corrigir a afirmação acima?

  2. Como posso adaptá-lo para ser usado em um WITH block?

Desde já, obrigado.

postgresql syntax
  • 6 respostas
  • 137660 Views
Martin Hope
Aaron Bertrand
Asked: 2013-08-14 08:14:58 +0800 CST

Quais informações de evento posso obter por padrão do SQL Server?

  • 63

Muitas vezes vejo perguntas em que as pessoas querem saber se uma determinada coisa aconteceu, ou quando aconteceu, ou quem executou a ação. Em muitos casos, o SQL Server simplesmente não rastreia essas informações por conta própria. Por exemplo:

  • Quem executou o último procedimento armazenado dbo.MyProcedure?
  • Quem atualizou a salarycoluna na dbo.Employeestabela?
  • Quem consultou a dbo.Orderstabela pela última vez no Management Studio?

Mas há vários outros eventos que o SQL Server rastreia temporariamente por padrão e pode responder a perguntas nativamente, como:

  • Quando foi a última vez que um crescimento automático ocorreu no banco de dados AdventureWorks e quanto tempo demorou?
  • Quem excluiu a dbo.EmployeeAuditDatatabela e quando?
  • Quantos erros relacionados à memória aconteceram hoje?

Como obtenho essas informações e por quanto tempo elas ficam disponíveis?

sql-server extended-events
  • 1 respostas
  • 21737 Views
Martin Hope
jrara
Asked: 2012-08-29 06:42:17 +0800 CST

Por que não usar uma tabela em vez de uma visão materializada?

  • 62

Sou novo em bancos de dados Oracle. Se entendi corretamente, a visão materializada é uma visão cujo conjunto de resultados é salvo como uma tabela física no banco de dados e essa visão/tabela é atualizada com base em algum parâmetro. Se a visualização é salva como uma tabela física, por que não armazenar os dados em uma tabela em primeiro lugar? Então, qual é o benefício de usar a visualização materializada em vez de uma tabela?

oracle performance
  • 6 respostas
  • 84802 Views
Martin Hope
Ben
Asked: 2012-08-08 04:39:28 +0800 CST

Como faço para trocar tabelas no MySQL?

  • 63

Suponha que eu tenha uma tabela foo, que contém algumas estatísticas que são calculadas de vez em quando. É muito usado por outras consultas.

É por isso que quero computar estatísticas mais recentes foo_newe trocá-las quando a computação estiver pronta.

eu poderia fazer

ALTER TABLE foo RENAME foo_tmp;
ALTER TABLE foo_new RENAME foo;

mas o que acontece se uma consulta precisar de uma tabela fooentre essas duas linhas quando não houver uma tabela foo? Acho que tenho que bloqueá-lo de alguma forma... ou há outra maneira de fazer isso?

mysql locking
  • 1 respostas
  • 30494 Views
Martin Hope
mikeplate
Asked: 2012-05-14 00:58:10 +0800 CST

O usuário criado pode acessar todos os bancos de dados no PostgreSQL sem nenhuma concessão

  • 63

Devo estar faltando alguma coisa com relação à configuração do PostgreSQL. O que eu gostaria de fazer é criar vários bancos de dados e usuários isolados uns dos outros para que um usuário específico tenha acesso apenas aos bancos de dados que eu especificar. No entanto, pelo que posso determinar, qualquer usuário criado tem acesso a todos os bancos de dados sem que nenhuma concessão específica seja fornecida.

Aqui está o que eu faço em um Ubuntu Server 12.04:

  1. apt-get instala postgresql
  2. sudo -u postgres createuser -DRSP mike1 (Especificando a senha para o novo usuário)
  3. sudo -u postgres createdb data1
  4. psql -h localhost -U mike1 data1 (Especificando a senha para o usuário mike1 fazer login)

Parece que o novo usuário "mike1" não tem problemas para se conectar ao banco de dados "data1" e criar tabelas etc. E isso sem executar nenhum comando GRANT (e o proprietário de "data1" é "postgres" já que não especifiquei um proprietário na etapa 3). É realmente assim que deve funcionar?

O que eu gostaria de fazer é conceder ao mike1 acesso total ao data1 e, em seguida, repetir isso para mais usuários e bancos de dados, certificando-se de que os usuários tenham acesso apenas a um (ou possivelmente vários) bancos de dados de minha escolha.

postgresql permissions
  • 4 respostas
  • 66240 Views
Martin Hope
jcho360
Asked: 2012-05-04 12:51:54 +0800 CST

Qual é mais rápido, InnoDB ou MyISAM?

  • 62

Como o MyISAM pode ser "mais rápido" que o InnoDB se

  • MyISAM precisa fazer leituras de disco para os dados?
  • O InnoDB usa o buffer pool para índices e dados e o MyISAM apenas para o índice?
mysql innodb
  • 4 respostas
  • 133506 Views
Martin Hope
Nick Chammas
Asked: 2011-08-04 10:43:53 +0800 CST

Quando devo reconstruir índices?

  • 64

Quando devo reconstruir os índices em meu banco de dados relacional (SQL Server)?

Existe um caso para reconstruir índices regularmente?

sql-server index-maintenance
  • 6 respostas
  • 92344 Views
Martin Hope
Jérôme Verstrynge
Asked: 2011-05-24 17:09:51 +0800 CST

Sobre o desempenho de bancos de dados de thread único versus multithread

  • 63

H2 é um banco de dados de thread único com boa reputação em relação ao desempenho. Outros bancos de dados são multi-thread.

Minha pergunta é: quando um banco de dados multi-thread se torna mais interessante do que um banco de dados de thread único? Quantos usuários? Quantos processos? Qual é o gatilho? Alguém tem experiência para compartilhar?

Resumo

  • O gargalo usual é o acesso ao disco
  • Os SSDs são rápidos, mas frágeis (o procedimento de falha é obrigatório)
  • Uma longa consulta em um único sistema de thread bloqueará todas as outras
  • Configurar o sistema multi-threading pode ser complicado
  • Bancos de dados multithread são benéficos mesmo em sistemas de núcleo único
database-recommendation performance
  • 6 respostas
  • 81844 Views
Prev
Próximo

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