Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913

    [MySQL] SELECT lenta su tabella di grandi dimensioni

    Ho una tabella MySQL che contiene descrizioni di dati, organizzati per id elemento di riferimento e codice lingua. La tabella contiene circa 1.200.000 campi e occupa più di 500MB su disco, secondo PHPMyAdmin.

    Facendo una ricerca sulla tabella specificando una chiave nel where, impiega un tempo improponibile, nell'ordine delle decine di secondi... qualcuno ha qualche idea su come ottimizzare il tutto? Lavoro per ora su un mio server locale, ho tutto installato sul notebook, questo influirà penso, non so valutare quanto.

    la tabella:

    codice:
    CREATE TABLE `descriptions` (
      `id` int(8) unsigned NOT NULL auto_increment,
      `description` text NOT NULL,
      `element_id` int(8) NOT NULL default '0',
      `langcode` varchar(3) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    Una select:

    codice:
    SELECT * FROM  descriptions WHERE element_id = 1 AND langcode = 'en'
    Potrebbe essere il campo di tipo TEXT a creare problemi?
    Può aiutare provare a dividere i dati su più tabelle divise per lingua?

    Grazie!

    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  2. #2

    Re: [MySQL] SELECT lenta su tabella di grandi dimensioni

    Originariamente inviato da rigby76
    Ho una tabella MySQL che contiene descrizioni di dati, organizzati per id elemento di riferimento e codice lingua. La tabella contiene circa 1.200.000 campi e occupa più di 500MB su disco, secondo PHPMyAdmin.

    Facendo una ricerca sulla tabella specificando una chiave nel where, impiega un tempo improponibile, nell'ordine delle decine di secondi... qualcuno ha qualche idea su come ottimizzare il tutto? Lavoro per ora su un mio server locale, ho tutto installato sul notebook, questo influirà penso, non so valutare quanto.

    la tabella:

    codice:
    CREATE TABLE `descriptions` (
      `id` int(8) unsigned NOT NULL auto_increment,
      `description` text NOT NULL,
      `element_id` int(8) NOT NULL default '0',
      `langcode` varchar(3) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    Una select:

    codice:
    SELECT * FROM  descriptions WHERE element_id = 1 AND langcode = 'en'
    Potrebbe essere il campo di tipo TEXT a creare problemi?
    Può aiutare provare a dividere i dati su più tabelle divise per lingua?

    Grazie!

    definire index i campi con cui fai la ricerca puo' aiutare
    Tremal-Naik
    ******************************
    passa a LINUX
    **********
    la religione e' il freno che impedisce al povero di ammazzare il ricco

  3. #3
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913

    Re: Re: [MySQL] SELECT lenta su tabella di grandi dimensioni

    Originariamente inviato da tremalnaik_sal
    definire index i campi con cui fai la ricerca puo' aiutare
    Pensi possa portare sensibili miglioramenti nelle prestazioni?
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372

    Re: Re: Re: [MySQL] SELECT lenta su tabella di grandi dimensioni

    Originariamente inviato da rigby76
    Pensi possa portare sensibili miglioramenti nelle prestazioni?
    Notevoli.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5

    Re: Re: Re: Re: [MySQL] SELECT lenta su tabella di grandi dimensioni

    Originariamente inviato da badaze
    Notevoli.
    mi hai preceduto
    Tremal-Naik
    ******************************
    passa a LINUX
    **********
    la religione e' il freno che impedisce al povero di ammazzare il ricco

  6. #6
    se dividi la tua tabella in diverse tabelle a scatole cinesi le prestazioni dovrebbero migliorare

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da GiovanniP
    se dividi la tua tabella in diverse tabelle a scatole cinesi le prestazioni dovrebbero migliorare
    cioè?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913
    Originariamente inviato da GiovanniP
    se dividi la tua tabella in diverse tabelle a scatole cinesi le prestazioni dovrebbero migliorare
    Pensavo anche di dividere i record su più tabelle a seconda della lingua... perderei in flessibilità ma almeno avrei tabelle più snelle, non so se intendevi questo.

    Per ora comunque sto vedendo il discorso degli indici... mi hanno consigliato anche di usare EXPLAIN su una select tipica, ottengo questo:

    id = 1
    select_type = SIMPLE
    table = descriptions
    type = ref
    possible_keys = element_id
    key = element_id
    key_len = 4
    ref = const
    rows = 60
    Extra = Using where

    Sembra consigli di usare almeno il campo element_id come indice...
    Spero di riuscire a indicizzare con i dati caricati, sennò devo fare di nuovo l'inserimento di 500MB di dati dal webservice!
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  9. #9
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913
    In effetti coi campi INDEX è moooolto più veloce... grazie a tutti!!

    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

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.