Domanda

stavo creando una tabella in SQL Server CE e ho capito che non supporta varchar.

Guardando questo in su, ho scoperto che "non Unicode colonne di testo (varchar, char, testo) e smallmoney non sono supportati, anche se nvarchar, nchar, sono supportati ntext e denaro", come ha dichiarato a MSDN .

E 'vero? Perché è questo, esattamente? Sembrerebbe che un compatto di database sosterrebbe tipi di dati che prendere meno bytes per memorizzare ... Sto assumendo che ci vuole più spazio per salvare i caratteri Unicode.

Qual è il ragionamento dietro questo?

È stato utile?

Soluzione

E 'probabilmente perché si basa completamente Unicode Windows CE e tutti si tratta di stringhe vengono memorizzate in questo modo.

Altri suggerimenti

Credo che stavano cercando di ridurre la loro impronta di implementazione e semplificare l'interfaccia. Questo, e probabilmente cercando di evitare di dover distribuire più versioni delle DLL (Unicode vs versioni non-Unicode).

E sì, è vero che solo supporta Unicode.

Ma questo non significa che automaticamente ci vogliono 2 byte per memorizzare. È possibile codificare che a livello di database per spogliare fondamentalmente il primo byte quando non è necessario. Molti motori di database fanno questo come un mezzo di compressione Unicode.

Significa solo che tutte le voci che utilizzano i due set byte hanno un piccolo sovraccarico di un marcatore addizionale risposta a motore che la sequenza è utilizzando due byte. Altrimenti un singolo byte può ancora essere memorizzato sul disco, e ampliato come parte del RowData lettura.

La maggior parte delle basi di dati compatte usano sempre una forma di compressione RunLength quando hanno effettivamente messo byte su disco in modo da risparmiare spazio. Il formato vi capita di vederlo in quando esce dal motore corrisponde raramente ciò che è effettivamente memorizzato sul disco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top