Necesito usar una columna de texto como clave principal para mi base de datos sqlite. También tengo la posibilidad de usar una función hash para obtener un int de 32 bits/64 bits de mis valores de texto (quiero usar como clave principal). Así que podría usar estos valores int hash en lugar de mi valor de texto como claves principales. Pero luego necesito almacenar el valor de texto sin procesar adicionalmente en la tabla.sqlite: ¿Debo usar una columna de texto como clave principal, o convertirla mediante una función hash?
Pero he leído que sqlite está usando un rowid internamente, así que no sé si usar una función hash ayudará de todos modos.
¿Se almacenará sqlite el rowid o el valor del texto (cuando lo uso en lugar del valor hash) en sus páginas? Cuando almacena el valor del texto, creo que podría volar las páginas y usar un valor de hash sería mejor.
Pero tengo una falta de conocimiento aquí. Espero que me puedas ayudar.
¿Por qué necesita/quiere usar una columna de texto como clave * primaria *? – Tim
@Tim, porque esa es la clave que obtengo de los datos. Es una cadena de unos 30 caracteres de largo. – Chris
si fuera a hacer referencia a esa tabla de otra u otras, iría con un entero autoincrementing como PK, y un índice en el campo de texto largo: 'select id, longtextvalue from T where longtextvalue =?'. – Tim