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

    [Mysql]Fulltext e Index

    Ho creato una tabella così strutturata:

    id int(8) No
    keywords text No
    mercato varchar(12) No
    giorno date No 0000-00-00
    track int(4) No 0
    statok int(1) No 0

    Il campo keywords è text perchè ho la necessità di eseguire query in fulltext con expansion query.

    Per provare a velocizzare la risposta ho creato indici:

    PRIMARY PRIMARY 70870 id
    keywords_2 INDEX 70870 keywords 140
    keywords FULLTEXT 1 keywords

    Per creare l'indice sul fulltext mi chiede la lunghezza che ho impostato a 140 (desumo che sia la lunghezza massima del testo). Ho messo 140 perchè è la lunghezza massima di caratteri che ho in una delle 70870 rows inserite.
    La mia domanda è se quell'indice può effettivamente darmi beneficio e se devo modificare il valore della lunghezza da 140 a superiore / inferiore

  2. #2

    Re: [Mysql]Fulltext e Index

    Originariamente inviato da stefano3804
    Per creare l'indice sul fulltext mi chiede la lunghezza che ho impostato a 140 (desumo che sia la lunghezza massima del testo). Ho messo 140 perchè è la lunghezza massima di caratteri che ho in una delle 70870 rows inserite.
    La mia domanda è se quell'indice può effettivamente darmi beneficio e se devo modificare il valore della lunghezza da 140 a superiore / inferiore
    Ciao Stefano,

    ti chiede la lunghezza per index e non per fulltext.

    Con un campo di tipo text la lunghezza max dell'indice puo' essere di 1000 byte. Il fatto di ridurlo a max lunghezza 140 del valore inserito non cambia nulla visto che di fatto e' il max inserito. Potrebbe essere anche un campo varchar.

    Pero' attento che il valore di 140 e' riferito ai byte e non al numero dei caratteri.

    Prefixes can be up to 1000 bytes long (767 bytes for InnoDB tables). Note that prefix limits are measured in bytes, whereas the prefix length in CREATE TABLE statements is interpreted as number of characters. Be sure to take this into account when specifying a prefix length for a column that uses a multi-byte character set.
    http://dev.mysql.com/doc/refman/5.0/en/indexes.html


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao Piero
    ti ringrazio della risposta
    Dunque cosa mi consigli metto 1000 al posto di 140 oppure posso anche lasciare così ?

  4. #4
    Originariamente inviato da stefano3804
    Ciao Piero
    ti ringrazio della risposta
    Dunque cosa mi consigli metto 1000 al posto di 140 oppure posso anche lasciare così ?
    dipende dai dati che hai nel campo.... 140 caratteri ci stanno in un campo varchar (max 255) che viene indicizzato al completo.

    Se chiedi e' perche' forse riscontri problemi? Se non hai problemi lascialo cosi', se invece hai qualche dubbio ed usi la codifica utf8 moltiplica per 3 (byte) i 140 caratteri (tot 420 byte)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    il varchar non mi permette di fare ricerche in fulltext o sbaglio ?

  6. #6
    Originariamente inviato da stefano3804
    il varchar non mi permette di fare ricerche in fulltext o sbaglio ?
    Prefixes can be up to 1000 bytes long (767 bytes for InnoDB tables). Note that prefix limits are measured in bytes, whereas the prefix length in CREATE TABLE statements is interpreted as number of characters. Be sure to take this into account when specifying a prefix length for a column that uses a multi-byte character set.

    You can also create FULLTEXT indexes. These are used for full-text searches. Only the MyISAM storage engine supports FULLTEXT indexes and only for CHAR, VARCHAR, and TEXT columns. Indexing always takes place over the entire column and column prefix indexing is not supported. For details, see Section 10.8, “Full-Text Search Functions”.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    ogni volta che parlo con te Piero, alla sera vado a dormire meno ignorante del giorno prima (e di questo te ne sarò sempre grato - tipo il giorno del salame )

    Dunque posso fare una select usanto match against anche se è varchar ???

    Dovrebbe essere più veloce la risposta ?

    provo subito

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 © 2024 vBulletin Solutions, Inc. All rights reserved.