es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer que PostgreSQL utilice el índice gin_trgm_ops para la comparación de igualdad

Hay una tabla y un índice gin, inserte 1,000,000 de números aleatorios. 0 < número < 100,000.
Pruebe dos consultas equivalentes:

create table Test
(
    id   serial primary key,
    code varchar(255) not null
);
create index Test_code_gin on Test using gin (code gin_trgm_ops);

— Test1
explicar analizar
seleccionar * from Test where code like ‘1234’;

— Test2
explicar analizar
seleccionar * from Test where code = ‘1234’;

Test1 utilizó el índice gin_trgm_ops, Tiempo de ejecución: 1.640 ms;
Test2 no utiliza un índice, Tiempo de ejecución: 24.531 ms;

¿Qué puedo hacer para que PostgreSQL use el índice? ¿O modificar la estrategia ORM y mi declaración SQL? ¿O simplemente agregar un índice BTree?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para que PostgreSQL utilice el índice para la consulta Test2, puedes modificar tu estrategia ORM y la declaración SQL utilizando el operador “LIKE” en lugar del operador “=” en la cláusula WHERE, o puedes agregar un índice BTree en la columna “code”. Sin embargo, debes tener en cuenta que el uso del operador “LIKE” no siempre es la mejor solución, ya que puede afectar el rendimiento si el número de registros en la tabla es muy grande. Se recomienda probar ambas opciones y elegir la que brinde el mejor rendimiento para tu caso de uso específico.

Comments are closed.