¿Es más eficiente unir todas las relaciones de uno a muchos entre varias tablas en una base de datos?
1. No es razonable e ineficiente. El uso de la coincidencia de cadenas y el escaneo completo de la tabla son operaciones que requieren mucho tiempo.
2. Al formar dos tablas gigantes, la eficiencia de las consultas relacionadas será muy baja.
Te sugiero tres soluciones. Puedes probar cuál es la más eficiente, porque el diseño y la oración en sí no son muy eficientes, pero tiene mucho que ver con el patrón de uso y el nivel de datos. Miles y millones Las estrategias de optimización son completamente diferentes.
Sugerencia 1: mejore su segundo plan, cree una tabla C de diccionario de frutas, defina un número de identificación para una persona similar para cada fruta y luego guárdelo en la tabla B para asociar las dos identificaciones, ambos campos son índices. El ID de la persona en la tabla A es la clave principal y el índice único, y la declaración es la siguiente:
Seleccione * de la tabla a existente (seleccione * de la tabla B, donde el ID de la fruta está en (1, 3, 4), ID de persona = t .ID de persona).
Sugerencia 2: Cambiar espacio por eficiencia. En el nivel de millones, la unión debería ser más eficiente que o. Entonces, como segunda sugerencia, similar a la estructura de tabla de la Tabla A, cree una tabla para cada fruta y luego almacene a las personas a las que les gusta esa fruta en esa tabla, como Table-Apple y Table-Watermelon, donde se almacenan el ID y el nombre de la persona a la que le gusta esta fruta. De esta forma se evitan consultas. La declaración es la siguiente:
seleccione * de table-apple
alliance
select * de table-watermelon
alliance p>
Seleccione *plátano de la tabla
Sugerencia 3: También usa espacio para mayor eficiencia, pero usa o. Calculo que el nivel del millón es el menos eficiente. Sobre la base de la tabla A (campo de cadena que no almacena frutas), se extienden 10 campos, el tipo es entero, correspondiente a 10 tipos de frutas, cada campo almacena dos valores 0 y 1. Todos estos 10 campos
Seleccione * de la tabla A donde manzana=1 o plátano=1 o...