STATEMENT_DIGEST() în MySQL

Criptare și hash MySQL 8.0+

Returnează amprenta (hash SHA-256) unei instrucțiuni SQL, aceeași pentru interogări care diferă doar prin valori.

Sintaxă
STATEMENT_DIGEST(instructiune)

Ce face STATEMENT_DIGEST()

MySQL grupează interogările asemănătoare într-un „digest”: înlocuiește valorile cu ?, normalizează spațiile și literele mari, apoi calculează o amprentă. STATEMENT_DIGEST() returnează această amprentă, iar STATEMENT_DIGEST_TEXT() textul normalizat.

Amprenta este aceeași care apare în coloana DIGEST din tabelele Performance Schema, deci o poți folosi pentru a găsi statisticile unei interogări. Instrucțiunea trebuie să fie SQL valid; altfel primești eroare de sintaxă.

Parametri

Parametru Descriere
instructiune Textul unei instrucțiuni SQL.

Ce returnează

Un text de 64 de caractere hexazecimale sau NULL.

Exemple

Exemplul 1: Aceeași amprentă pentru valori diferite

SELECT STATEMENT_DIGEST('SELECT * FROM produse WHERE id = 5') AS amprenta;

SELECT STATEMENT_DIGEST('SELECT * FROM produse WHERE id = 5') =
       STATEMENT_DIGEST('select *   from produse where id=42') AS aceeasi_interogare,
       STATEMENT_DIGEST('SELECT * FROM produse WHERE id = 5') =
       STATEMENT_DIGEST('SELECT * FROM produse WHERE pret = 5') AS alta_coloana;

Rezultat

+------------------------------------------------------------------+
| amprenta                                                         |
+------------------------------------------------------------------+
| ce609216f9cb80989c3e3af9c6cf0f57799b85f23695910a7222e6883b8d2708 |
+------------------------------------------------------------------+
+--------------------+--------------+
| aceeasi_interogare | alta_coloana |
+--------------------+--------------+
|                  1 |            0 |
+--------------------+--------------+

Greșeli frecvente

  • Folosești STATEMENT_DIGEST() ca hash general pentru texte. Funcția analizează SQL; pentru texte oarecare folosește SHA2().

Comenzi înrudite

  • STATEMENT_DIGEST_TEXT(): Returnează forma normalizată a unei instrucțiuni SQL: valorile devin ?, iar numele primesc ghilimele inverse.
  • SHA2(): Calculează suma de control SHA-2 (SHA-224, SHA-256, SHA-384 sau SHA-512) a unui text.
  • FORMAT_PICO_TIME(): Transformă un timp în picosecunde într-un text ușor de citit: 3.50 ns, 250.00 ms, 3.15 min.