2008-09-17 21 views
7

He estado enfermo y cansado Haciendo una búsqueda en Google de la búsqueda insensible a mayúsculas y minúsculas en Sybase ASE (los nombres de datos/columnas de Sybase distinguen entre mayúsculas y minúsculas). La documentación de Sybase dice con orgullo que solo hay una forma de hacer esa búsqueda que está utilizando las funciones Superior e Inferior, pero el adagio dice que tiene problemas de rendimiento. Y créanme que tienen razón, si su tabla tiene datos enormes, el rendimiento es tan incómodo que nunca volverán a utilizar Upper y Lower. Mi pregunta a otros desarrolladores es: ¿cómo abordan esto?Búsqueda insensible a mayúsculas y minúsculas en Sybase

P.S. No aconseje cambiar el orden de clasificación ni pasar a ninguna otra base de datos, en el mundo real los desarrolladores no controlan las bases de datos.

Respuesta

1

Si no puede cambiar el orden de clasificación en la base de datos (la mejor opción), los índices en los campos de casos desconocidos no ayudarán. Hay una forma de hacer esto y mantener el rendimiento si la cantidad de campos es manejable. Usted hace una columna adicional MyFieldLower. Utiliza un disparador para mantener el campo lleno con una minúscula de MyField.

Entonces la pregunta es: DONDE MyFieldLower = INFERIOR (@MySearch)

Esto utilizará la indexación.

3

intente crear un functional index, como

Create Index INDX_MY_SEARCH on TABLE_NAME(LOWER(@MySearch) 
2

Añadir columna superior o inferior adicional caso en su sentencia de selección. Ejemplo:

select col1, upper(col1) upp_col1 from table1 order by upp_col1 
Cuestiones relacionadas