vistas una tablas rendimiento recomendaciones queries porque optimizar optimizador lenta las dañan cuello consulta como busquedas botella agilizar database database-design terminology

database - tablas - ¿Qué es una tabla de búsqueda?



view lenta mysql (7)

Acabo de dar un diagrama de base de datos para una base de datos que creé a nuestra cabeza de la base de datos y ella puso un montón de notas sugiriendo que cambie el nombre de ciertas tablas para que quede claro que son tablas de búsqueda (agregue "lu" al comienzo de la tabla nombre).

Mi problema es que estos no se ajustan a la definición de lo que considero que es una tabla de búsqueda. Siempre he considerado una tabla de búsqueda básicamente como un conjunto de opciones que no definen ninguna relación. Ejemplo:

luCarMake ----------- id Make -- --------- 1 Audi 2 Chevy 3 Ford

La persona de la base de datos en mi trabajo está sugiriendo que cambie el nombre de varias tablas que son solo identificadores que modifican una tabla a otra como tablas de búsqueda. Ejemplo (Location_QuadMap a continuación):

Location ---------- LocationId name description Location_QuadMap <-- suggesting i rename this to luLocationQuad ---------------- QuadMapId LocationId luQuadMap --------- QuadMapId QuadMapName

¿Es seguro asumir que ella leyó mal el diagrama o hay otra definición de la que no tengo conocimiento?


Algunas personas usan el término Tabla de búsqueda como la tabla que se encuentra en el medio de una relación de muchos a muchos.


La tabla de búsqueda es la tabla que contiene solo ID, nombre y la descripción de algún tema / objeto / cosa. ID es clave primaria y auto_increment. Nada más.


Lo que tienes allí se llama una tabla de unión . También se lo conoce como:

  • tabla de referencia cruzada
  • mesa puente
  • unirse a la mesa
  • tabla de mapa
  • mesa de intersección
  • mesa de enlace
  • tabla de enlaces

Pero nunca he visto el término "tabla de búsqueda" utilizado para este propósito.


Mark Byers tiene la definición correcta para esa tabla. Básicamente una mesa de intersección. Ver cualquier libro de texto de la base de datos.

Pero en realidad he trabajado con muchos DBA / arquitectos y la mayoría inventa su propio estilo para hacer cosas y no están dispuestos a escuchar nada más. Cosas como reglas de indentación, caso para sentencias de SQL, convenciones de nombres para tablas (incluso malas), estrategias de archivo, etc. ... Básicamente no tienes otra opción si tienen el control de la base de datos. Puedes mencionar que es una tabla de intersección, señala la literatura adecuada, pero al final si ella quiere llamarlo MyStupidlyLongAndPointlessPrefixForTablesBecauseICan_Lookup_Location_Quadmap e insiste, entonces no hay nada que puedas hacer.

Intenta decírselo a ella, pero si ella no está de acuerdo, no te lo tomes demasiado en serio ...

Solo pensé en otra cosa. Las tablas de búsqueda (nuestra definición) también se denominan comúnmente tablas de códigos. Entonces puede llamar tablas de búsqueda de tablas intersectadas y tablas de códigos de tablas de búsqueda. En ese caso, es posible que tengas que aprender a hablar su idioma ...


Un uso de la tabla de búsqueda es almacenar valores enum otra manera.

Diga, tenemos un Status enum.

En lugar de guardar "No iniciado", "En curso", "Completado", "Enviados" ... en cada registro de la base de datos, guardaremos el número entero 1, 2, ... únicamente.

En el lado de la programación, el ORM como Entity Framework puede convertir fácilmente un entero subyacente en un tipo Enum.

De esta forma, el inconveniente es que el valor entero no es legible desde el lado de la base de datos. Al resolver este problema, agregamos una tabla de búsqueda como

Id Status 1 Not Started 2 In Progress ...

Para que nuestro DBA pueda tener un diccionario para "buscar", mostrando el texto de estado uniéndose a esta tabla de búsqueda.


Una tabla de búsqueda es normalmente una tabla que actúa como una "lista maestra" de algo y la usa para buscar un valor de clave comercial (como "Crear") en exachange para su identificador (como la columna id) para usar en algún otro columna de la clave externa de la tabla.

Básicamente, entras con algo para "mirar hacia arriba" y cambiarlo por otra cosa.

El location_quadmap en el otro lado es una tabla puente que, como ya se dijo, se usa cuando tiene una relación muchos a muchos entre dos entidades. Si llamas a eso una tabla de búsqueda, entonces diría que cualquier tabla podría llamarse tabla de búsqueda. Esas tablas solo contienen identificadores para otras tablas, por lo que primero debe buscar el ID en la tabla, buscar los identificadores que coinciden en la tabla del puente y luego buscar las filas correspondientes en el Tercera mesa? Parece tomar el término demasiado lejos.


Elija sus batallas , pero le pediría a la persona que aclare la convención de nombres, ya que sugirieron que se use la misma convención para las relaciones uno a muchos y muchos a muchos. Parece que cualquier relación de clave externa significa que hay una tabla de "búsqueda" involucrada.

Si esa es la convención de nomenclatura para otras bases de datos, entonces no presionaré mi suerte.