¡Sobre el diseño de la estructura de muchos a muchos de la base de datos y los complejos problemas de las declaraciones SQL!
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 la consulta conjunta será muy baja.
Te sugiero tres soluciones. Puedes probar cuál es la más eficiente, porque el diseño y las declaraciones en sí no son muy eficientes, pero tienen mucho que ver con el uso y el nivel de datos. de miles o millones. La estrategia es completamente diferente.
Sugerencia 1: mejore su segundo plan, cree una tabla C de diccionario de frutas, defina un número de identificación de una persona similar para cada fruta y luego almacene la tabla B en dos asociaciones de identificación. Cada campo es un índice. 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 donde exista (seleccione * de la tabla B donde el ID de la fruta esté en (1, 3, 4) y ID de personal = t.
Sugerencia 2: Cambiar espacio por eficiencia. La eficiencia de la unión debe ser superior al nivel de un millón de 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 esta fruta en esta tabla, como Table-Apple y Table-Watermelon, en esta tabla Los ID y Se almacenan nombres de personas a las que les gusta esta fruta. De esta forma se evitan consultas. La declaración es la siguiente:
Seleccione * de table-apple
Alianza
seleccione * de mesa-sandía
Alianza p>
select * from table-banana
......
Sugerencia tres: También usa espacio para mayor eficiencia, pero usa o. Calculo que la eficiencia estará en el nivel más bajo del rango de los millones. 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...