Hola Horacio, puede que el operador de indices btree text_pattern_opste
pueda ayudar, hace un tiempo resolví con ellos, en búsquedas de texto tipo:
atributo like 'texto%'
O tal vez la extensión pg_trgm que tiene unos operadores especiales para
indices gin y gist también te puedan ayudar.
Saludos
PD: si tienes 9.4, ¿has valorado utilizar JSONB?
El 9/5/2015 a las 8:39 PM, Horacio Degiorgi escribió:
Hola a todos:
estoy buscando la forma de mejorar una consulta a un campo json
el campo en cuestion es "jmarc"
y contiene informacion como esta (extracto, el registro tiene 30
claves json)
{
"id":"OUNOUNCON000712",
"format":[
"Impreso"
],
"title":"El derecho del mar : estados archipela\u0301gicos : historia legislativa de
la parte IV de la Convencio\u0301n de las Naciones Unidas sobre el Derecho del Mar \/ Oficina de
Asuntos Ocea\u0301nicos y del Derecho del Mar.",
"building":"Biblioteca Central",
"recordtype":"marc"
}
Estoy usando esta consulta en una gran base de datos de 960mb y
300.000 registros.
select identificador, idcatalogo, titulo from
catalogo where idcoleccion = 2 and
json_extract_path_text(jmarc,'title') ilike '%arte%' order by
identificador LIMIT 1 OFFSET 6
hay forma de optimizar la consulta de tipo ilike como la que estoy
haciendo ?
el indice creado es:
CREATE INDEX idx_catalogo_jj_title ON catalogo USING btree
(json_extract_path_text(jmarc, VARIADIC ARRAY['title'::text]))
Lic. Horacio Degiorgi
http://bdigital.uncu.edu.ar
http://sid.uncu.edu.ar <http://sid.uncu.edu.ar>
Mendoza - Argentina