Ho una tabella le cui colonne sono varchar(50)
e float
. Ho bisogno (molto rapidamente) di ottenere il float associato a una determinata stringa. Anche con l'indicizzazione, questo è piuttosto lento.Indicizzazione SQL su varchar
So, tuttavia, che ogni stringa è associata a un numero intero, che conosco al momento della ricerca, in modo che ogni stringa si associ a un numero intero univoco, ma ogni numero intero non esegue il mapping su una stringa univoca. Si potrebbe pensare ad esso come una struttura ad albero.
C'è qualcosa da guadagnare con l'aggiunta di questo intero al tavolo, l'indicizzazione su di esso, e l'utilizzo di una query come:
SELECT floatval FROM mytable WHERE phrase=givenstring AND assoc=givenint
Questo è Postgres, e se non si poteva dire, ho molto poco esperienza con i database.
Anche il confronto delle chiavi di indice è molto più costoso con varchar, dato che sono a conoscenza delle impostazioni internazionali. L'indice intero sarà sicuramente molto più veloce di qualsiasi altra opzione. –
@Magnus: il confronto dovrebbe essere eseguito solo con 'log (n)' volte, quindi non definirei questo "molto" più costoso, ma hai ragione, aggiunge anche alcuni cicli 'CPU'. – Quassnoi