MySQL View Processing Algorithms

Resumo : neste tutorial, você aprenderá sobre algoritmos de processamento de visualização do MySQL, incluindo MERGE, TEMPTABLEe UNDEFINED.

As instruções CREATE VIEWe ALTER VIEWpossuem uma cláusula opcional: ALGORITHM. O algoritmo determina como o MySQL processa uma visualização e pode assumir um dos três valores MERGE, TEMPTABLEe UNDEFINE.

Aqui está a CREATE VIEWdeclaração com a ALGORITHMcláusula:

CREATE [OR REPLACE][ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW 
   view_name[(column_list)]
AS 
   select-statement;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

E esta é a ALTER VIEWdeclaração com a ALGORITHMcláusula:

CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW 
   view_name[(column_list)] 
AS 
   select-statement;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MERGE

Quando você consulta a partir de uma MERGEvisualização, o MySQL processa as seguintes etapas:

  • Primeiro, mescle a consulta de entrada com a SELECTinstrução na definição da visualização em uma única consulta.
  • Em seguida, execute a consulta combinada para retornar o conjunto de resultados.

Observe que a combinação da consulta de entrada e a SELECTdeclaração da definição da visualização em uma única consulta é chamada de resolução da visualização .

Veja o seguinte customersno banco de dados de exemplo :

A instrução a seguir cria uma visualização baseada na customerstabela com o nome contactPersonsdo MERGEalgoritmo:

CREATE ALGORITHM=MERGE VIEW contactPersons(
    customerName, 
    firstName, 
    lastName, 
    phone
) AS
SELECT 
    customerName, 
    contactFirstName, 
    contactLastName, 
    phone
FROM customers;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Suponha que você emita a seguinte declaração:

SELECT * FROM contactPersons
WHERE customerName LIKE '%Co%';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MySQL executa estas etapas:

  • Converta o nome da visualização contactPersonsem nome da tabela customers.
  • Converta askterisk (*) em uma lista de nomes de colunas customerName, firstName, lastName, phone, que corresponde a customerName, contactFirstName, contactLastName, phone.
  • Adicione a WHEREcláusula.

A declaração resultante é:

SELECT 
    customerName, 
    contactFirstName, 
    contactLastName, 
    phone
FROM
    customers
WHERE
    customerName LIKE '%Co%';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

TEMPTABLE

Quando você emite uma consulta para uma TEMPTABLEvisualização, o MySQL executa estas etapas:

  • Primeiro, crie uma tabela temporária para armazenar o resultado SELECTna definição da visualização.
  • Em seguida, execute a consulta de entrada na tabela temporária.

Como o MySQL precisa criar a tabela temporária para armazenar o conjunto de resultados e mover os dados das tabelas base para a tabela temporária, o algoritmo TEMPTABLE  é menos eficiente que o MERGEalgoritmo.

Observe que TEMPTABLEas visualizações não podem ser atualizáveis .

UNDEFINED

Este UNDEFINEDé o algoritmo padrão quando você cria uma visualização sem especificar a ALGORITHMcláusula ou especifica explicitamente ALGORITHM=UNDEFINED.

Além disso, quando você cria uma visualização ALGORITHM = MERGEe o MySQL só pode processar a visualização com uma tabela temporária, o MySQL define automaticamente o algoritmo UNDEFINEDe gera um aviso.

O UNDEFINEDpermite que o MySQL escolha MERGEou TEMPTABLE. E o MySQL prefere, MERGE  se TEMPTABLE  possível, porque MERGEgeralmente é mais eficiente que o TEMPTABLE.

Neste tutorial, você aprendeu sobre os algoritmos de processamento de visualização do MySQL, incluindo MERGE, TEMPTABLEe UNDEFINED.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *