Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [SQL] Meglio una INSERT corposa o 1000 INSERT mini?

    Devo inserire centinaia di valori numerici su un database, i primi due valori per ogni record sono uguali mentre il terzo è quello che cambia. Attualmente inserisco i valori in questo modo
    ID -- FB ------ FRIEND

    1 123456 111111
    2 123456 222222
    3 123456 333333
    4 123456 444444
    5 123456 555555
    6 123456 666666

    etc..etc...

    Stavo pensando se è utile, se alleggerisco il numero delle INSERT separando il terzo valore con u due punti o una virgola...

    ID -- FB ------ FRIEND

    1 123456 111111:2222222:3333333:444444:5555555:6666666


    in fatto di prestazioni è migliore il primo o il secondo metodo?
    Www.Spritzlandia.it - Community dedicata agli amanti del famoso aperitivo. Amici, Blog, Chat, annunci gratis. Eventi in Pub, Discoteche e Pizzerie a Padova, Venezia, Treviso.

  2. #2
    Secondo la mia (non eccessiva) esperienza con corpose moli di dati da caricare, molto meglio la query singola.

  3. #3
    Prenderei in considerazione l'utilizzo di prepared statements.

    Guarda qui, ultimo argomento della pagina

    http://database.html.it/guide/lezion...-e-connettori/
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  4. #4
    asia, secondo me stai sbagliando approccio: la normalizzazione di un database è un conto il numero delle query e il come comporle è un altro.

    Una buona normalizzazione permette di conservare correttamente i dati, per leggerli ci sono sempre modi efficenti

    Ad esempio puoi usare le insert con valori multipli, anche se non sono veloci come i prepared statement, che ti permettono di usare l'estensione mysql (per i prepared statement dovresti usare mysqli o pdo ma non so se quest'ultimo genera in locale le query simulando i prepared statement per poi inviarli normalmente). Comunque, da quanto so, l'estensione mysqli ha qualche problemuccio

    A questo si aggiunge che non tutti supportano la mysqli o pdo e quindi dovresti cercare l'hoster che offra supporto per queste estensioni e soprattutto che monti una versione abbastanza recente di php.

    Ti linko la pagina del manuale di mysql
    http://dev.mysql.com/doc/refman/5.1/en/insert.html

    Per intenderci la query sarebbe di questo tipo

    codice:
    INSERT INTO tabella (colonna1, colonna2, colonna3) VALUES ('valore1', 'valore2', 'valore3'), ('valore1', 'valore2', 'valore3'), ('valore1', 'valore2', 'valore3'), ('valore1', 'valore2', 'valore3'), ('valore1', 'valore2', 'valore3'), ('valore1', 'valore2', 'valore3')
    Come vedi è abbastanza semplice

    Dipende dalla dimensione dei dati ti conviene inserire dai 100 ai 500 blocchi di valori per query, considera che generalmente la dimensione massima dei dati che puoi passare in una sola volta ammonta a circa 1mb
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.