Hola Hernan. llevo mucho tiempo sin trabajar directamente con postgresql.(y sin colaborar en la lista). asi que nose si mi idea esta bien o es pesima.
select * from TU_TABLA_CON_ID_BIGINT where id_tip_reg in ( --//el campo id_tip_reg es tu bigint en BD select unnest(values) --//el campo values es el alias que le das a cada valor de tu string de parametro unnest crea la "tabla" con los valores del array from (select string_to_array('1,1,5,89,9,6,3,8,8,9',',')::bigint[] as values) as parameters --//convertimos el string que te llega como parametro a array de bigints ) es mas o menos lo mismo que quieres hacer me imagino.... pero no casteas todos los id's de tu bd (que por ser bigint me imagino que son miles o millones) sino solo casteas los que llegan como parametro que me imagino seran decenas o maximo centenas. podrias probar la idea vs el cast del id a char y el like para ver performance... NOTA: me pregunto como quedaria tu like(la expresion en si) por ejemplo con valor de id =2 y param "5,7,9,54,2,36,542,59,21" Saludos. 2016-06-21 17:57 GMT-04:00 Hellmuth Vargas <hiv...@gmail.com>: > Hola Herman > > En ese caso, si tiene bastantes registros, la distribución es mas o menos > heterogénea y la consulta se trata de prefijo (empieza por) podría probar: > > 1.Crear indice sobre la versión texto de la columna entera, ejemplo: > > CREATE INDEX idx_indice_patron ON tabla (CAST(ID_TIP_REG AS TEXT) > text_pattern_ops); > > > 2. verificar el funcionamiento: > > WHERE CAST(ID_TIP_REG AS TEXT) LIKE param; > > > > > El 21 de junio de 2016, 16:36, Herman Estaban<hermanesta...@gmail.com> > escribió: > >> Hellmuth gracias por la respuesta. >> >> Necesito el LIKE para devolver todo los codigos y tambien elegir un >> codigo especifico. >> >> WHERE CAST(ID_TIP_REG AS CHAR) LIKE param; >> >> param : Que puede ser '%' todos o cualquiera de estos codigos 1, 2, 3, 4, >> 5, 6, 7, 8, 9, 10, 11, 12, 13, 99. >> >> Como ya habia mencionado los campos primary key y foreign key son de tipo >> de datos INTEGER o BIGINT, tengo tambien campos indicadores que son de >> tipo CHAR(1) 'A' = ANULADO, 'V' = VIGENTE, '0'= INACTIVO, '1' = INACTIVO >> por dar unos ejemplos, deberia trabajar estos con tipo de dato INTEGER, >> seria mas eficiente, ya que trabajo los campos primary key y foreign key >> porque INTEGER es mas rapido en las busquedas que usando CHAR. >> >> Saludos. >> >> El mar., 21 jun. 2016 a las 16:16, Hellmuth Vargas (<hiv...@gmail.com>) >> escribió: >> >>> Hola Herman >>> >>> >>> Pensaría que tiene algo como: >>> >>> dominio de ID_TIP_REG: >>> de 100 a 199 -> categoria1 >>> de 200 a 299 -> categoria2 >>> de 300 a 399 -> categoria3 >>> .... >>> >>> >>> Si es así no debería utilizar LIKE sin mas bien un BETWEEN >>> >>> >>> WHERE ID_TIP_REG BETWEEN <rango inferior categoria> AND <rango superior >>> categoria> >>> >>> >>> >>> >>> El 21 de junio de 2016, 16:01, Herman Estaban<hermanesta...@gmail.com> >>> escribió: >>> >>>> Buenas tardes, todos los campos primary key y foreign key de mis tablas >>>> son de tipo de datos INTEGER y BIGINT. >>>> >>>> Y tengo la necesidad de hacer un LIKE a un campo de tipo INTEGER en un >>>> SELECT. >>>> >>>> Que tan eficiente es hacer esto: >>>> >>>> WHERE CAST(ID_TIP_REG AS CHAR) LIKE '1%' >>>> >>>> LIKE es mas rapido con CHAR, VARCHAR que con INTEGER? >>>> >>>> Espero sus comentarios. >>>> >>>> Saludos. >>>> >>> >>> >>> >>> -- >>> Cordialmente, >>> >>> Ing. Hellmuth I. Vargas S. >>> Esp. Telemática y Negocios por Internet >>> Oracle Database 10g Administrator Certified Associate >>> EnterpriseDB Certified PostgreSQL 9.3 Associate >>> >>> > > > -- > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > EnterpriseDB Certified PostgreSQL 9.3 Associate > > -- Solo alcanzaras el conocimiento conociendo la ignorancia.