¿Qué hace la palabra clave COLLATE al crear un índice SQLite?
Pregunta
De acuerdo con la sqlite3 documentación ,
La cláusula COLLATE después de cada nombre de la columna define una compaginación secuencia utilizada para las entradas de texto en que columna. El orden de clasificación predeterminado se define el orden de clasificación para que columna de la tabla CREATE declaración. O si no hay un orden de clasificación se defina de otra manera, el built-in se utiliza secuencia de clasificación binario.
¿Qué hace un orden de clasificación, y lo que es un orden de clasificación BINARIO?
Solución
Es la forma en que los datos de SQL pedidos de motores internos. Intercalación binaria hace lo que indica, se hace una comparación binaria. Generalmente su la intercalación más rápida aunque nunca he cuantificado, como se comprueba patrones de bits, que significa que es el caso y el acento insensible.
Otros consejos
colación binaria compara su cadena de bytes a byte, como en una tabla Unicode. Por ejemplo: A, B, a, b. Una orden sensible caso sería:. A, A, b, B
La ventaja de intercalación binaria es su velocidad, como la comparación de cadenas es muy simple / rápido. En caso general, los índices con binaria puede que no producen los resultados esperados para la especie, sin embargo, para coincidencias exactas que pueden ser útiles.
INTERCALAR NOCASE también afecta a las consultas entre mayúsculas y minúsculas.
Si usted tiene una columna con estos valores: 'AA', 'AA'
select * from table where col = 'aa'
Si ha creado su columna con INTERCALAR NOCASE volverá tanto 'AA' y 'AA'. De lo contrario, si no se especifica, se devolverá solo 'AA'.
También puede especificar en una sentencia (esto es más lento que si hubiera creado su columna con INTERCALAR NOCASE)
select * from table where col = 'aa' COLLATE NOCASE