martes, 2 de junio de 2009

INDEXAR COLUMNAS EN ORACLE CUANDO USAMOS LIKE

Bueno he tenido el problema de ajustar consultas cuando usan el operador like con la mascara '%%' , esto sin duda hace un full scan a la tabla en cuestion.

Afortunadamente oracle nos soluciona este problemas con unos tipos especiales de indices usando oracle text.

Estos tipos especiales de indices son:

# CONTEXT Indexes : se usa para buscar en documentos pdf , html etc.
# CTXCAT Indexes : se usa para buscar texto corto nomas de 30 caracteres.
# CTXRULE Indexes :
para construir aplicaciones de clasificación de documento

primero vamos a crear el indice sobre la columa col1

CREATE INDEX myindice ON tabla(col1) INDEXTYPE IS CTXSYS.CONTEXT;

y en vez de hacer la query

select col1 from tabla where col1 like '%AA%'

hacemos esto

SELECT col1
FROM tabla
WHERE CONTAINS(col1, 'AA', 1) > 0

y usara el indice creado anteriormente.


free counters

No hay comentarios:

Publicar un comentario