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
joanolo
Asked: 2016-12-30 00:02:32 +0800 CST

EXISTS (SELECT 1 ...) vs EXISTS (SELECT * ...) Um ou outro?

  • 55

Sempre que preciso verificar a existência de alguma linha em uma tabela, costumo escrever sempre uma condição como:

SELECT a, b, c
  FROM a_table
 WHERE EXISTS
       (SELECT *  -- This is what I normally write
          FROM another_table
         WHERE another_table.b = a_table.b
       )

Algumas outras pessoas escrevem assim:

SELECT a, b, c
  FROM a_table
 WHERE EXISTS
       (SELECT 1   --- This nice '1' is what I have seen other people use
          FROM another_table
         WHERE another_table.b = a_table.b
       )

Quando a condição é NOT EXISTSem vez de EXISTS: Em algumas ocasiões, posso escrevê-la com a LEFT JOINe uma condição extra (às vezes chamada de antijoin ):

SELECT a, b, c
  FROM a_table
       LEFT JOIN another_table ON another_table.b = a_table.b
 WHERE another_table.primary_key IS NULL

Eu tento evitá-lo porque acho que o significado é menos claro, especialmente quando o que é seu primary_keynão é tão óbvio, ou quando sua chave primária ou sua condição de junção é multi-coluna (e você pode facilmente esquecer uma das colunas). No entanto, às vezes você mantém o código escrito por outra pessoa... e ele está lá.

  1. Existe alguma diferença (além do estilo) para usar SELECT 1em vez de SELECT *?
    Existe algum caso de canto em que não se comporte da mesma maneira?

  2. Embora o que escrevi seja o SQL padrão (AFAIK): Existe essa diferença para diferentes bancos de dados / versões mais antigas?

  3. Existe alguma vantagem em escrever explicitamente um antijoin?
    Os planejadores/otimizadores contemporâneos a tratam de forma diferente da NOT EXISTScláusula?

sql-server mysql
  • 7 respostas
  • 129527 Views
Martin Hope
Chris
Asked: 2016-05-10 04:48:59 +0800 CST

Por que um arquivo .bacpac é tão pequeno comparado a um arquivo .bak do mesmo banco de dados?

  • 56

Eu tenho feito backups dos meus bancos de dados SQL Server 2014 Express para importação para outros servidores e notei uma diferença no tamanho do arquivo entre .bacpace .bak.

Por que um .bacpacarquivo é tão pequeno comparado a um .bakarquivo do mesmo banco de dados?

Obrigado por quaisquer insights!

sql-server backup
  • 3 respostas
  • 32203 Views
Martin Hope
Souradeep Nanda
Asked: 2016-04-19 05:13:11 +0800 CST

Se o nome de uma pessoa for nulo, como isso quebraria o banco de dados?

  • 56

Eu estava lendo este artigo na BBC. Ele conta a história de uma pessoa chamada Jenifer Null e como ela enfrenta problemas do dia a dia ao usar bancos de dados online como reserva de passagens aéreas, net banking etc.

Não sou muito versado em bancos de dados e não os uso com muita frequência. Quando criei um site para aprendizado, a validação do formulário do lado do servidor usava expressões regulares. Pelo que me lembro, aceitaria alegremente o nome "Null". Eu não tentei embora.

Alguém poderia explicar os detalhes técnicos quando essa situação ocorreria? A validação do formulário está apenas fazendo um string == NULLou algo assim? Mesmo assim não acho NULL is same as "NULL".

database-agnostic null
  • 7 respostas
  • 20936 Views
Martin Hope
xpda
Asked: 2013-04-25 14:37:33 +0800 CST

Depois de mover o banco de dados (backup, restauração), tenho que adicionar novamente o usuário

  • 56

Ocasionalmente, movo um banco de dados (SQL Express 2012) de uma máquina de desenvolvimento para um servidor, ou vice-versa, usando backup e restauração de banco de dados no SQL Server Management Studio.

Sempre que faço isso, os aplicativos na máquina de destino não podem acessar o banco de dados até que eu exclua o usuário que eles usam, "george", dos usuários do banco de dados (Banco de dados, Segurança, Usuários no SQL Server Management Studio) e o adicione novamente como proprietário em Segurança, Logins, george/propriedades, mapeamento de usuários.

Existe uma maneira melhor de fazer isso? Parece um pouco complicado.

sql-server backup
  • 6 respostas
  • 116670 Views
Martin Hope
Ian Timothy
Asked: 2013-03-23 07:56:18 +0800 CST

PostgreSQL EXCLUDE USING erro: tipo de dados inteiro não tem classe de operador padrão

  • 56

No PostgreSQL 9.2.3 estou tentando criar esta tabela simplificada:

CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING gist (user_id WITH =, startend WITH &&)
);

Mas recebo este erro:

ERROR:  data type integer has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define
       a default operator class for the data type.

Os documentos do PostgreSQL usam este exemplo que não funciona para mim:

CREATE TABLE room_reservation (
    room text,
    during tsrange,
    EXCLUDE USING gist (room WITH =, during WITH &&)
);

Mesma mensagem de erro.

E este , que também não funciona para mim:

CREATE TABLE zoo (
    cage   INTEGER,
    animal TEXT,
    EXCLUDE USING gist (cage WITH =, animal WITH <>)
);

Mesma mensagem de erro.

Eu sou capaz de criar isso sem nenhum problema:

CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING gist (startend WITH &&)
);

e isto:

CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING btree (user_id WITH =)
);

Passei um bom tempo procurando dicas sobre como fazer isso funcionar, ou descobrir por que não funcionaria. Alguma ideia?

postgresql constraint
  • 2 respostas
  • 31538 Views
Martin Hope
Thronk
Asked: 2013-03-20 06:30:10 +0800 CST

Em que tipo de dados devo armazenar um endereço de e-mail no banco de dados?

  • 55

Eu entendo que um endereço de e-mail de 254 caracteres é válido, mas as implementações que pesquisei tendem a usar um varchar(60) para varchar(80) ou equivalente. Por exemplo: esta recomendação do SQL Server usa varchar(80) ou este exemplo do Oracle

Existe uma razão para não usar o máximo de 254 caracteres? Um varchar, por definição, não usa apenas o armazenamento necessário para armazenar os dados?

Existem implicações/compensações significativas de desempenho que fazem com que tantas implementações usem menos do que os 254 caracteres possíveis?

database-design datatypes
  • 7 respostas
  • 178261 Views
Martin Hope
8kb
Asked: 2012-05-31 22:01:51 +0800 CST

Qual é o propósito do 'proprietário' do banco de dados?

  • 56

Hoje, enquanto solucionava um problema do agente de serviços, descobri que o proprietário do banco de dados era o login do Windows de um funcionário que havia deixado a empresa. Seu login foi removido e, portanto, as notificações de consulta estavam falhando.

Supostamente, a melhor prática para lidar com isso é tornar 'sa' o proprietário do banco de dados. Nós mudamos e isso limpou a fila.

Minha pergunta (muito elementar): qual é o proprietário do banco de dados e qual é o seu propósito?

sql-server sql-server-2008
  • 2 respostas
  • 68599 Views
Martin Hope
Buttle Butkus
Asked: 2012-01-28 04:50:19 +0800 CST

Por que o DROP DATABASE está demorando tanto? (MySQL)

  • 56

Nova instalação do CentOS.

Eu estava executando uma importação de um banco de dados grande (arquivo sql de 2 GB) e tive um problema. O cliente SSH parecia perder a conexão e a importação parecia congelar. Eu usei outra janela para fazer login no mysql e a importação parecia estar morta, presa em uma tabela de linhas de 3M específica.

Então eu tentei

DROP DATABASE huge_db;

15-20 minutos depois, nada. Em outra janela, fiz:

/etc/init.d/mysqld restart

A janela DROP DB apresentou a mensagem: SERVER SHUTDOWN. Então eu realmente reiniciei o servidor físico.

Logado novamente no mysql, verificado e o db ainda estava lá, executei

DROP DATABASE huge_db;

novamente, e novamente estou esperando já cerca de 5 minutos.

Mais uma vez, é uma nova instalação. O huge_dbé o único db (diferente do dbs do sistema). Eu juro que deixei cair db's tão grandes antes e rapidamente, mas talvez eu esteja errado.

Eu derrubei com sucesso o banco de dados. Demorou algo como 30 minutos. Observe também que acho que me enganei quando pensei que a importação do mysqldump estava morta. A conexão do terminal foi perdida, mas acho que o processo ainda estava em execução. Eu provavelmente matei a tabela intermediária de importação (a tabela de linhas de 3M) e provavelmente 3/4 do caminho através de todo o banco de dados. Era enganoso que "top" mostrasse o mysql usando apenas 3% da memória, quando parecia que deveria estar usando mais.

Soltar o banco de dados acabou levando 30 minutos, então, novamente, talvez eu não tivesse que reiniciar o servidor e possivelmente poderia ter esperado o DROP terminar, mas não sei como o mysql reagiria ao obter uma consulta DROP para o mesmo db que está importando via mysqldump.

Ainda assim, a pergunta permanece, por que leva mais de 30 minutos para DROP um banco de dados de 2 GB quando tudo o que deveria fazer é excluir todos os arquivos db e remover todas as referências ao banco de dados de information_schema? Qual é o problema?

mysql mysqldump
  • 5 respostas
  • 94751 Views
Martin Hope
Dan Leary
Asked: 2012-01-19 14:44:07 +0800 CST

Práticas recomendadas para alterações de esquema e migrações de dados para um banco de dados ativo sem tempo de inatividade?

  • 56

Como você faz alterações de esquema em um banco de dados ativo sem tempo de inatividade?

Por exemplo, digamos que eu tenha um banco de dados PostgreSQL com uma tabela incluindo vários dados de usuário, como endereços de e-mail, etc., todos associados a usuários específicos. Se eu quisesse mover os endereços de e-mail para uma nova tabela dedicada, teria que alterar o esquema e migrar os dados de e-mail para a nova tabela. Como isso poderia ser feito sem interromper as gravações na tabela original? Certamente, enquanto os dados são gravados da tabela antiga para a nova, os novos dados continuariam a ser gravados na tabela antiga e seriam perdidos, certo?

Acho que esse problema surge com bastante frequência, mas não consigo encontrar nenhuma solução padrão para lidar com isso.

Este artigo trata do problema, mas eu realmente não entendi a etapa 3. Ele diz para gravar nas duas tabelas e depois migrar os dados antigos da primeira tabela para a nova. Como você garante que está migrando apenas dados antigos?

(Eu uso PostgreSQL no Heroku .)

postgresql schema
  • 1 respostas
  • 27348 Views
Martin Hope
Aleksandr Levchuk
Asked: 2011-01-13 15:52:51 +0800 CST

Não é possível renomear colunas nas visualizações do PostgreSQL com CREATE OR REPLACE

  • 57

No PostreSQL 8.3, estou tentando criar uma visão que se pareça com uma tabela existente, mas com nomes de colunas diferentes.

Isso funciona

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;

O acima faz uma duplicata da tabela family_tree, mas a tentativa a seguir falha:

CREATE OR REPLACE VIEW gfam.nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;
  • ERRO: não é possível alterar o nome da coluna de visualização "family_tree_id"

Como posso renomear colunas?

postgresql
  • 3 respostas
  • 46010 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