Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Occupazione campi dbMemo/Text in Access/Sql Server

I campi Access=dbMemo, SQL Server=Text (ovvero campi testo a lunghezza
indefinita) presentano un tot di problemi, per esempio non possono essere
oggetto di Order By (non capirò mai il perchè!), quindi intendevo
sostituirne alcuni con campo Access=dbText, SQL Server=nvarchar da 255
caratteri.
Mi/vi chiedo, però: Se un campo a lunghezza indefinita vuoto occupa
presumibilmente (a parte la sua definizione) 0 bytes, sarà vero che un campo
dbText/nvarchar a lunghezza definita (255) vuoto occupa anch'esso 0 bytes?
Grazie.

 Grazie.
Si, dato che il campo VARCHAR non e' a lunghezza definita ma a lunghezza
*massima* definita, a differenza del CHAR che invece alloca sempre e
comunque il numero di caratteri indicato
Tra l'altro in Access non mi risulta esista un equivalente del CHAR...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 Grazie.
con sqlserver non so. per quel che ho visto con access, quando aggiungi un
record lui alloca la lunghezza del campo: alla prima compattazione pero'
recupera lo spazio inutilizzato. dbase invece, anche dopo il pack, occupava
tutta la lunghezza del campo, utilizzata o no.
ciao, a.

 Tra l'altro in Access non mi risulta esista un equivalente del CHAR...
Grazie, Luca.
Nel frattempo ho fatto (solo in Access) alcune prove:
Ho compattato il db, ho trasformato due campi dbMemo in due tabelle in
dbText, 255 per un totale di circa 1000 records. Ho ricompattato e ho
guadagnato circa 15 Kb su circa 1500.
Ho fatto la controprova riportando a dbMemo gli stessi campi e ho
ricompattato: ho avuto un aumento di circa 15 Kb. Ho fatto la
contro-controprova e ho riguadagnato i 15Kb.
Quindi (visto che i campi trasformati erano praticamente tutti vuoti) è
anche possibile affermare (almeno in Access) che il "vuoto" non occupa
spazio in più, anche se a lunghezza massima definita, ma anche che i campi
dbText occupano meno (in quanto a definizione/struttura) dei campi dbMemo.

 recupera lo spazio inutilizzato.
Vero. Vedi l'altro mio post per le prove che ho fatto (solo in Access)

 so, solo i primi 100 caratteri, meglio di niente... bastava una Left
in dbase/clipper si poteva.
index on subs(pippo,100), se ricordo la sintassi.
era piu' lunga, pero' utile.
ma i dbt ne erano cmq esclusi, suppongo anche a causa della struttura a
puntatore.
d'altra parte coi db e le normalizzazioni devi sempre scegliere e forzare.
se credi che ti servira' ricercare in seek sui campi memo, nel validate del
txt relativo usa qualcosa tipo
    rs!memotxt=left(rs!memo,100)
(occhio ai null).
poi le query le fai con orderby memotxt.
pero' a quel punto c'e' qualcosa che tocca nella modellizzazione, imho.
ciao, a.

 dbText occupano meno (in quanto a definizione/struttura) dei campi dbMemo.
ciao, a.


...oppure usa una full-text query (vedi più sotto
"Ricercare parole..."
ciao
ugo

 bastava una Left
In mysql è possibile definire indici sui primi n caratteri dei campi
testo... in mssql non so...

 "Ricercare parole..."
quelle sono robe da information retrieval systems.
regole scorrette a dir poco, diciamo pure equadoregne.
cose che un morigerato rdbms'er cerca di non sapere neppure che esistano...

 Grazie.
Ciao Lupo
per Access non sono sicuro, ma per SQL Server si.
I campi varchar, nvarchar e compagnia bella se sono
vuoti non occupano spazio nella riga, a parte i byte
e bit necessari a SQL per la mappatura della riga.
Su questo ci metto tutte e due le mani sul fuoco.
Ciao
Yoda
VB 6 BCP
(Balasso Certified Professional)

 Su questo ci metto tutte e due le mani sul fuoco.
Grazie ... Muzio ;-)))

 Grazie ... Muzio ;-)))
:))))
non ho capito bene però chi dei due deve
fare la parte di Muzio Scevola......... ;))
cmq quello che ho scritto è vero.
I campi variabili in SQL Server se
sono vuoti occupano solo lo spazio
necessario alla mappatura.....


 fare la parte di Muzio Scevola......... ;))
io non ho capito _quale_ delle due.
mani.
si erano offerte entrambe, perche' scegliere ?


 si erano offerte entrambe, perche' scegliere ?
e sммммм......... era una battuta per rispondere.......
Yoda
VB 6 MCP
(Muzio Certified Professional)
:)))))))

 fare la parte di Muzio Scevola......... ;))
Io ho fatto delle prove e 100 lire (ho detto lire!) le scommetto volentieri,
tu c'hai messo tutte e due le mani, quindi Scevola, stavolta, sei tu ;-))
Grazie ancora.