¿Cómo compruebo la clasificación en una columna de índice?

Puedo encontrar la lista de índices para una tabla usando lo siguiente:

PRAGMA index_list(myTable);

A partir de los resultados de esto, puedo obtener detalles sobre las columnas dentro de un índice con lo siguiente:

PRAGMA index_info(myIndex);

Pero parece que no puedo encontrar una manera de indicar el orden de clasificación de las columnas. ¿Hay algún otro pragma que haya pasado por alto que me permita hacer esto?

Nota: Sé que puedo seleccionar de SQLITE_MASTER y analice el orden de clasificación de la declaración de creación, pero preferiría no analizar si es posible. Sin embargo, si esta es la única solución, entonces tendrá que funcionar.

preguntado el 22 de mayo de 12 a las 18:05

Al menos si opta por el análisis, la sintaxis es simple y está bien definida: sqlite.org/lang_createindex.html . Una expresión regular para capturar los nombres de columna y asc/desc será fácil de construir. Puedo ayudar con eso si es útil. -

Una expresión regular sería excelente, pero ¿sería posible considerar las necesidades de recursividad (columnas múltiples), clasificación opcional y órdenes de clasificación, además de que los nombres de las columnas pueden o no escaparse con corchetes? (No soy muy bueno con las expresiones regulares y este parece mucho más complejo que cualquiera que haya escrito). Parece que puede ser mucho más fácil hacer un análisis de cadenas). -

1 Respuestas

Después de un grep rápido a través del código fuente 3.7.13, no creo que ninguno de los pragmas exponga el orden de clasificación. Las únicas referencias a KeyInfo::aSortOrder que puedo encontrar están en el código CREATE INDEX o en operaciones reales de la base de datos, como consultar o comparar índices entre sí.

No parece que sería mucho trabajo agregarlo al pragma index_info, si hacer una compilación personalizada de SQLite es una opción para usted.

Respondido el 11 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.