Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379

    Struttura database, 150 000 record?

    Ciao a tutti, ho un quesito da porvi. Spero di arrivare ad una conclusione perchè sarebbe proprio sollevante!!!!

    Sto realizzando un sito, con rispettivo database mysql. Si tratta di un piccolo vocabolario con ca. 150 000 record al suo interno ( +/- 20MB). Ora pero' mi rendo conto di quanto possa essere esoso fare richieste continue a qesta tabella proprio per la sua elevata mole di contenuti. E sappiate che per continue intendo diverse decine ogni pochi secondi.

    Vorrei strutturarlo in modo tale da alleggerire il carico ed aumentare la veloctià delle richieste che vengono effettuate e quindi mi appello a voi per darmi una piccola mano!


    Inizialmente la sua struttura era di questo tipo: ( su txt )
    | vocabolo | informazioni varie.... |


    Io invece pensavo di strutturarlo diversamente, ma voglio proprio un vostro parere per sapere se il campo "iniziali" ha un senso o meno:

    | id | iniziali | vocabolo | informazioni varie |

    in iniziali pensavo di mettere le prime tre/4 lettere dello stesso vocabolo proprio per poi eseguire una query di questo tipo:

    ** select 'informazioni varie' from vocabolario where iniziali like 'ban' and vocabolo like 'banconota'; **

    Teoricamente restringendo con un campo l'azione della ricerca pensavo di velocizzare la ricerca, ma in pratica ovviamente non so se serve a qualcosa...

    grazie aticipatamente.

    ps. se avete altre soluzioni sparate pure

    pss. un'altra domandina dato che le informazioni varie sarebbero un array, mi consigliate di serializzarlo prima di inserirlo nel campo informazioni varie o di fare una stringa e dividere i valori?

  2. #2
    Se le ricerche sono per vocabolo esatto, ti dovrebbe bastare creare un indice (magari unico) sul campo vocabolo e poi eseguire le query con LIMIT 1.

    Per quanto riguarda le informazioni varie, non puoi inserirle in altrettanti campi?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    I vocaboli non possono essere unici purtroppo. Ci avevo pensato anche io!

    codice:
    appoggio,verbo,appoggiare,prima,singolare,presente,indicativo;
    appoggio,cosa,maschile,singolare;
    Per le "altre informazioni" anche non posso fare un campo per ogni informazione dato che cambiano a prescindere dalla natura dello stesso vocabolo ( verbo, aggettivo, ecc.. )...

  4. #4
    Originariamente inviato da jerry6565
    I vocaboli non possono essere unici purtroppo.
    Allora crea un indice NON UNIQUE, esegui le query senza limit e verifica che performance ottieni.
    Se proprio vedi che non ottieni l'incremento desiderato, puoi provare a creare una tabella per ogni iniziale, ed eventualmente, più tabelle per quelle lettere che contengono la maggior parte delle parole.

    Originariamente inviato da jerry6565
    Per le "altre informazioni" anche non posso fare un campo per ogni informazione dato che cambiano a prescindere dalla natura dello stesso vocabolo ( verbo, aggettivo, ecc.. )...
    Crea un'altra tabella tipo dictionary:

    id | vocabolo_id | name | value

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    grazie ^^

    una ulteriore domanda.. gli indici interni di mysql si creano utilizzando la stessa tabella giusto? Quindi potrei avere un incremento di prestazioni anche piu avanti, e non immediato?!

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.