¿Sería generalmente más rápido leer en una tabla donde no se almacenan varchar u otros datos de longitud variable? En MySQL, esto es más rápido porque puede calcular exactamente dónde se almacenará una fila en el disco.¿Es más rápido leer columnas de ancho fijo en SQLite?
Respuesta
Esta pregunta no es significativa en el contexto de SQLite, ya que solo admite un solo tipo de campo TEXT
. La distinción de "ancho fijo" frente a "longitud variable" no existe aquí.
Mientras que SQLite le permite definir un campo como de cierto tipo, todo lo que hace es (como máximo) establecer la preferencia del campo para el tipo que se utilizará cuando se almacenan datos ambiguos (por ejemplo, si se almacenará "3" como INTEGER, REAL o TEXT). Todavía puede almacenar cualquier tipo de datos en cualquier campo SQLite, independientemente de su tipo.
Específicamente en relación con CHAR vs VARCHAR, http://www.sqlite.org/datatype3.html nos dice:
Si el tipo declarado de la columna contiene cualquiera de las cadenas "CHAR", "CLOB", o "TEXTO", entonces eso la columna tiene afinidad de TEXTO. Observe que el tipo VARCHAR contiene la cadena "CHAR" y por lo que se le asigna afinidad de TEXTO.
Dado que SQLite uses variable-length records solamente, supongo que no implementaron la optimización de búsqueda de ancho de reparación cuando las filas tienen la misma longitud.
Y como Dave señaló, todavía se puede almacenar texto en los campos INT. Desde SQLite never truncates data, esto significa que SQLite permite una columna de ancho aparentemente fijo como INT para almacenar también datos de longitud variable. Por lo tanto, es imposible implementar la optimización de búsqueda de ancho fijo.
- 1. ¿SQLite es realmente más rápido que MySQL?
- 2. Dos columnas, izquierda con ancho fijo, derecha con ancho dinámico
- 3. WPF Vista en árbol con columnas de ancho fijo
- 4. Como leer más rápido BufferedReader
- 5. Disposición de fluidos con algunas columnas de ancho fijo
- 6. CSS - Columnas de fluido fijo
- 7. Diseñar un diseño de tabla columnas de ancho fijo y fijo + colspan
- 8. Tabla con 3 columnas. Ancho de columna de centro fijo. ¿Cómo se ha compartido el ancho en otras dos columnas?
- 9. Tabla HTML - tabla de 100% de ancho, combinación de ancho fijo y columnas de fluido UNIFORM
- 10. ¿Es + = más rápido que - =?
- 11. archivos Parse de ancho fijo
- 12. La fuerza de la tabla de columnas de ancho fijo se expande en el contenedor
- 13. Ancho de trazo fijo en SVG
- 14. Determine el ancho de un ancho DIV dinámico Multivolpea de DIV 3 ancho de columna fijo
- 15. Enteros de ancho fijo en C++
- 16. Android: fuente de ancho fijo en AlertDialog
- 17. Tabla con columnas dinámicas pero diseño fijo
- 18. ¿Por qué no es un patrón de ancho fijo?
- 19. SQLite: ¿la forma más rápida de leer datos de la base de datos SQLite?
- 20. ¿doble o flotante, que es más rápido?
- 21. ¿Es `extender` más rápido que` + = `?
- 22. CSS - ancho fijo SPAN/div
- 23. CSS ancho fijo en un lapso
- 24. En MySQL, ¿es más rápido eliminar e insertar o es más rápido actualizar las filas existentes?
- 25. ¿Qué es más rápido EN O?
- 26. Fuentes con verdadero ancho fijo en WPF
- 27. Leer el registro de ancho fijo desde el archivo de texto
- 28. diseño de 2 columnas (ancho fijo de la columna izquierda, fluido derecho + claro: ambos)
- 29. Campos de ancho fijo de inserción masiva
- 30. SQLite: GROUP_CONCAT() varias columnas
Pero también podría eliminar todas las columnas text/varchar/char de una tabla. Entonces sería ancho fijo. Mi pregunta es si esto permitiría o no una búsqueda más rápida de la columna (que no sea solo de pequeño tamaño). – David
No, no lo haría. Como explica el documento vinculado, SQLite usa tipos de campos dinámicos. Incluso si declara un campo como INTEGER, aún puede almacenar flotantes, texto o incluso blobs en él. La declaración "INTEGER" le da al campo una preferencia para almacenar datos como enteros, pero no lo restringe para hacerlo. Todavía sería una columna/registro de ancho variable. (Y eso incluso ignora el detalle de que INTEGER no es de tamaño fijo en SQLite de todos modos ...) –