English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Breve discussão sobre a tabela temporária e a tabela derivada do MySQL

Sobre tabelas derivadas

Quando a consulta principal contém tabelas derivadas, ou quando a cláusula SELECT contém a palavra-chave UNION, ou quando a cláusula SELECT contém uma cláusula ORDER BY em um campo (para uma cláusula GROUP BY em outro campo), o MySQL precisa criar automaticamente tabelas temporárias para armazenar conjuntos de resultados temporários. Essas tabelas temporárias são criadas e mantidas automaticamente pelo MySQL e tornam-se tabelas temporárias automaticamente criadas. Para as tabelas temporárias automaticamente criadas, devido à superioridade do desempenho das tabelas temporárias em memória, o MySQL sempre usa tabelas temporárias em memória primeiro. Quando as tabelas temporárias em memória ficam muito grandes, alcançando um certo limiar, as tabelas temporárias em memória são convertidas em tabelas temporárias em disco. Isso significa que as tabelas temporárias em disco são uma extensão das tabelas temporárias em memória. O limiar de conversão das tabelas temporárias em memória para tabelas temporárias em disco é determinado pelo menor valor das variáveis de sistema max_heap_table_size e tmp_table_size.

As tabelas derivadas geralmente são usadas na cláusula FROM. Por exemplo:

select * from (select * from table) as t;

Sobre tabelas temporárias

Quando você está trabalhando em tabelas muito grandes, você pode precisar ocasionalmente executar muitas consultas para obter um pequeno subconjunto de dados, em vez de executar essas consultas em toda a tabela. Em vez disso, permitir que o MySQL encontre os poucos registros necessários a cada vez pode ser mais rápido, e depois executar consultas nessas tabelas.

Criar uma tabela temporária é fácil, basta adicionar a palavra-chave TEMPORARY ao comando CREATE TABLE normal:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)

A tabela temporária existirá enquanto você estiver conectado ao MySQL. Quando você se desconectar, o MySQL deletará automaticamente a tabela e liberará o espaço utilizado. Claro, você pode deletar a tabela e liberar o espaço enquanto ainda estiver conectado.

DROP TABLE tmp_table

Se ao criar uma tabela temporária chamada tmp_table, uma tabela chamada tmp_table já existir no banco de dados, a tabela temporária precisará ocultar (esconder) a tabela não temporária tmp_table.

Se você declarar a tabela temporária como uma tabela HEAP, o MySQL também permite que você a crie na memória:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP

Como as tabelas HEAP são armazenadas na memória, as consultas que você executar nelas podem ser mais rápidas do que as tabelas temporárias no disco. No entanto, as tabelas HEAP diferem das tabelas comuns e têm suas próprias limitações. Veja o manual do MySQL para mais detalhes.

Como sugerido anteriormente, você deve testar a tabela temporária para ver se ela realmente é mais rápida ao executar consultas em grandes bases de dados. Se os dados estiverem bem indexados, a tabela temporária pode não ser muito rápida.

1. Quando a conexão com o MySQL é desligada, o sistema apagará automaticamente os dados da tabela temporária, mas isso se aplica apenas às tabelas criadas com a seguinte sentença:

Definição de campo:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)

2) diretamente importar os resultados da consulta para a tabela temporária

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name

2. Além disso, o MySQL também permite que você crie tabelas temporárias diretamente na memória, porque está na memória, a velocidade será muito rápida, a sintaxe é a seguinte:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP

3Do que pode ser visto na análise acima, os dados das tabelas temporárias serão apagados, você desligou a conexão e eles serão automaticamente apagados, mas você não pode conectar-se ao banco de dados a cada execução de sql no seu programa (se isso acontecer, você terá o problema que preocupa), porque apenas ao desligar a conexão do banco de dados os dados serão automaticamente apagados, ao executar várias sql dentro de uma conexão de banco de dados, o sistema não apagará automaticamente os dados das tabelas temporárias.

Declaração: O conteúdo deste artigo é extraído da internet, pertence ao respectivo autor, o conteúdo é contribuído e carregado voluntariamente pelos usuários da internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w3Aviso: O conteúdo deste artigo é extraído da internet, pertence ao respectivo autor, o conteúdo é contribuído e carregado voluntariamente pelos usuários da internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w

Você também pode gostar