Inserisci rapidamente righe in blocco con MySQL

Inserisci rapidamente righe in blocco con MySQL

Immergiamoci nel mondo dell'inserimento di dati in blocco in MySQL. Immagina di essere uno sviluppatore software che sta costruendo una nuova applicazione. Hai una funzionalità fantastica che si basa su un enorme set di dati. Ma prima di lanciarla nel mondo reale, devi testare come il tuo sistema gestisce un grande volume di dati.

Qui entra in gioco l'inserimento di dati in blocco. È come un modo turbo per popolare rapidamente il tuo database con molte informazioni.

Puoi simulare scenari del mondo reale inserendo migliaia o addirittura milioni di record per vedere come il tuo database e la tua applicazione si comportano sotto pressione.

Gli inserimenti in blocco sono essenziali per valutare le prestazioni del tuo database e della tua applicazione, permettendoti di confrontare diverse configurazioni e ottimizzare la velocità.

Esploriamo alcuni esempi di scenari in cui potresti utilizzare gli inserimenti in blocco per i test:

Potresti utilizzare un inserimento in blocco per aggiungere utenti, prodotti, ordini o persino recensioni dei clienti al tuo database in una sola volta. Questo è molto più veloce rispetto all'aggiunta di ogni ordine singolarmente. Questo ti consente di testare come la tua applicazione gestisce grandi quantità di dati.

Devi popolare il tuo database con un gran numero di prodotti per testare la funzionalità di ricerca e filtraggio.

Quindi, se stai lavorando con un sistema che gestisce grandi volumi di dati, gli inserimenti in blocco sono uno strumento potente da avere nel tuo arsenale.

Nella prossima parte, esploreremo alcuni esempi specifici di come l'inserimento in blocco può essere utilizzato per testare il tuo software.

Per generare 10.000 righe di dati per la tua tabella wp_postmeta in un unico comando INSERT:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)

 SELECT

  nums.n,

  CONCAT('Ten Thousand Key ',  CAST(nums.n AS CHAR)),

  CONCAT('Ten Thousand Value ',  CAST(nums.n AS CHAR))

 FROM (

  SELECT 

   d1.N + d2.N * 10 + d3.N * 100 + d4.N * 1000 + 1 AS n

  FROM

   (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d1

  ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d2

  ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d3

  ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d4

  ORDER BY n

 ) nums;

Analizziamo passo dopo passo:

  • Sottoquery (nums): Questa sottoquery è responsabile della generazione della sequenza di numeri.

    • Utilizza un comando SELECT per combinare quattro sottoquery identiche (etichettate d1, d2, d3 e d4) utilizzando UNION ALL.
    • Ogni sottoquery contiene i numeri da 0 a 9.
    • L'espressione d1.N + d2.N * 10 + d3.N * 100 + d4.N * 1000 + 1 AS n combina i valori delle quattro sottoquery per creare una sequenza di numeri da 1 a 10.000.
    • ORDER BY n garantisce che i numeri siano generati in ordine crescente.
  • Query principale: Questo è il comando INSERT INTO.

    • Utilizza il comando SELECT per specificare i dati da inserire.
    • post_id: La variabile nums.n (che contiene i numeri generati) è utilizzata direttamente come post_id.
    • meta_key: L'espressione CONCAT('Chiave Diecimila ', CAST(nums.n AS CHAR)) genera una chiave unica per ogni riga.
    • meta_value: L'espressione CONCAT('Valore Diecimila ', CAST(nums.n AS CHAR)) crea un valore unico per ogni riga.

Dati prodotti: La query inserirà 10.000 righe nella tabella wp_postmeta. Ogni riga avrà:

  • post_id: Un numero da 1 a 10.000.
  • meta_key: Una chiave unica come "Chiave Diecimila 1", "Chiave Diecimila 2", ecc.
  • meta_value: Un valore unico come "Valore Diecimila 1", "Valore Diecimila 2", ecc.

Questa query MySQL può essere utilizzata per diecimila righe, ma per inserimenti di dati più grandi è necessario avanzare nell'approccio alla generazione dei dati.

La seguente query MySQL è un modo ingegnoso per generare un milione di righe di dati per la tua tabella wp_postmeta utilizzando variabili definite dall'utente e una serie di operazioni CROSS JOIN.

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)

SELECT

 (@rn := @rn + 1) as rn,

 CONCAT('One Million Key ',  CAST(@rn AS CHAR)),

 CONCAT('One Million Value ',  CAST(@rn AS CHAR))

FROM

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d1 CROSS JOIN 

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d2 CROSS JOIN 

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d3 CROSS JOIN 

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d4 CROSS JOIN 

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d5 CROSS JOIN 

 (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d6 CROSS JOIN

 (SELECT @rn := 0) params

Analizziamo questa estesa query MySQL:

  • Variabile definita dall'utente (@rn):

    • La query introduce una variabile definita dall'utente chiamata @rn. Questa variabile viene utilizzata per tenere traccia del numero di riga mentre generiamo i dati.
    • Inizializzazione: La variabile è inizializzata a 0 nell'ultimo comando SELECT: (SELECT @rn := 0) params.
  • CROSS JOIN:

    • La query utilizza sei operazioni CROSS JOIN per generare un gran numero di righe.
    • Ogni CROSS JOIN combina i risultati di due tabelle. In questo caso, stiamo utilizzando sei sottoquery identiche (etichettate d1 a d6) contenenti i numeri da 0 a 9.
    • Ogni CROSS JOIN moltiplica il numero di righe per 10. Poiché abbiamo sei operazioni CROSS JOIN, il numero totale di righe generate è 10 * 10 * 10 * 10 * 10 * 10 = 1.000.000.
  • Comando SELECT:

    • Il comando SELECT recupera i seguenti dati per ogni riga:
      • (@rn := @rn + 1) as rn: Questa espressione incrementa la variabile @rn di 1 per ogni riga, creando effettivamente un numero di riga. La clausola as rn assegna al numero di riga generato l'alias rn.
      • CONCAT('Chiave Un Milione ', CAST(@rn AS CHAR)): Questa espressione genera una chiave unica per ogni riga. Combina la stringa "Chiave Un Milione " con il numero di riga corrente (@rn) convertito in un carattere.
      • CONCAT('Valore Un Milione ', CAST(@rn AS CHAR)): Questa espressione genera un valore unico per ogni riga. Combina la stringa "Valore Un Milione " con il numero di riga corrente (@rn) convertito in un carattere.

Dati prodotti:

  • La query inserirà un milione di righe nella tabella wp_postmeta. Ogni riga avrà:
    • post_id: Un numero di riga da 1 a 1.000.000.
    • meta_key: Una chiave unica come "Chiave Un Milione 1", "Chiave Un Milione 2", ecc.
    • meta_value: Un valore unico come "Valore Un Milione 1", "Valore Un Milione 2", ecc.

Punti chiave:

  • Le variabili definite dall'utente sono strumenti potenti per la manipolazione dei dati all'interno di una query.
  • CROSS JOIN è un ottimo modo per generare un gran numero di righe combinando più tabelle o sottoquery.
  • Questo metodo è più efficiente rispetto all'utilizzo di operazioni UNION ALL nidificate per generare un gran numero di righe.

Questa query dimostra un approccio intelligente ed efficiente per generare una massiccia quantità di dati di test per il tuo database.



Parole chiave: Inserimento in blocco MySQL,Inserimento di grandi dati MySQL,Inserisci più righe MySQL,Migliori pratiche di inserimento in blocco MySQL,Genera dati di test MySQL,Inserisci molte righe MySQL in modo efficiente,CROSS JOIN MySQL per la generazione di dati,Esempi di inserimento in blocco MySQL,Inserimento batch in MySQL,Tecniche di generazione dati MySQL
Articolo successivoMessaggio precedente
No Comment
    Aggiungi un commento
    comment url