Usar Gresbase /

Buscar en todas las tablas

Busca un valor o un nombre en todas las tablas de la conexión a la vez, con resultados que llegan tabla a tabla.

En esta página

Abrirla#

Hay dos formas:

  • Buscar en todas las tablas en la barra lateral.
  • En la paleta de comandos (Ctrl K, o ⌘ K en Mac), escribe el término y elige Buscar «término» en todas las tablas.

El término y los esquemas quedan en la dirección, así que una búsqueda se puede recargar o compartir: /search?q=…. Escribe al menos dos caracteres.

Qué busca#

Los resultados llegan en dos secciones.

Estructura, arriba: tablas, vistas y columnas cuyo nombre contiene el término. Usa los nombres que Gresbase ya conoce, así que no cuesta ninguna consulta. Haz clic en una tabla para abrirla, o en una columna para abrir su tabla con esa columna resaltada.

Datos: las filas que contienen el término, agrupadas por tabla. Cada fila enseña la columna que coincide y un trozo de su valor alrededor de la coincidencia, con el término resaltado. Haz clic en una fila para abrir su tabla filtrada a esa fila y con la columna resaltada.

En los datos, cada columna se compara según su tipo:

Tipo de columna Coincide cuando
Texto (text, varchar, char, citext, name) y enums El valor contiene el término, sin distinguir mayúsculas. % y _ del término se toman tal cual.
Enteros, numeric, real, double precision El término es un número igual al valor. Un número demasiado grande para una columna no se compara con ella.
uuid El término es ese uuid.
date El término es esa fecha, como AAAA-MM-DD.
timestamp, timestamptz El término es una fecha (AAAA-MM-DD) y el valor cae en ese día.

Las columnas JSON, de array y binarias no se buscan.

Esquemas#

Por defecto se busca en todos los esquemas que puedes usar. Todos los esquemas abre una lista para limitarla a uno o a varios. La elección queda en la dirección junto al término.

Límites#

Límite Valor
Filas por tabla 20
Filas en total 500. Al llegar ahí la búsqueda para y lo dice: afina el término o los esquemas.
Tiempo por tabla 5 segundos
Tablas grandes Las tablas con más de 1.000.000 de filas estimadas se dejan fuera salvo que marques Incluir tablas grandes.

Una tabla que pasa de su tiempo aparece en No se ha podido buscar como Demasiado lenta. Reintentar con más tiempo la busca otra vez, sola y con 30 segundos. Ahí aparecen también las tablas sin permiso o con un error, y la búsqueda sigue con las demás.

Primero se buscan las tablas más pequeñas, de dos en dos, así que los primeros resultados llegan enseguida. Cancelar para la búsqueda, y PostgreSQL cancela la consulta en curso.

Permisos y modos#

  • Solo se busca en las tablas y columnas que tu rol puede leer con SELECT. La seguridad por filas se aplica: solo ves las filas que tu rol puede ver.
  • Cada tabla se busca en una transacción de solo lectura. La búsqueda funciona en una instancia o conexión de solo lectura, con conexiones guardadas y en modo libre.
  • Las tablas particionadas se buscan una vez, a través de la tabla madre. En las vistas y tablas externas no se buscan datos.

Bases de datos grandes#

Comparar texto con ILIKE '%término%' lee la tabla entera salvo que ayude un índice de trigramas. Para una tabla grande que buscas a menudo, un índice de la extensión pg_trgm permite a PostgreSQL encontrar las filas rápido:

SQL
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX users_email_trgm ON users USING gin (email gin_trgm_ops);

Detrás de un proxy#

Los resultados llegan como un flujo, tabla a tabla, así que empiezan a verse enseguida. La respuesta pide a los proxies que no la retengan (X-Accel-Buffering: no para Nginx, Cache-Control: no-transform contra la compresión), y se ha probado de principio a fin detrás de Nginx. Consulta Seguridad y red.