sql >> Base de Datos >  >> RDS >> Mysql

¿Hay una mejor manera de obtener datos de dos tablas a la vez con Sphinx/MySQL?

Realmente no puedes salirte con la tuya sin tener dos consultas MySQL. Bueno, podrías, simplemente combinándolos en uno, con UNION. O creando una nueva 'tabla' combinada (ya sea una vista o una vista materializada), pero realmente no creo que valga la pena el esfuerzo. Dos consultas están perfectamente bien, como usted dice que indexaron.

Puede usar un índice de esfinge (y, por lo tanto, una consulta de búsqueda), creando un nuevo índice combinado. Debido a que dice que sus claves no son únicas, tendría que crear una nueva clave sintética.

por ejemplo...

sql_query = SELECT userid*2 AS id, 1 AS table_id, firstname AS one, lastname as two FROM tellycards_user_data \
              UNION \
            SELECT (id*2)+1 as id, 2 AS table_id, name AS one, screenshot AS two FROM tellycards_ripples
sql_attr_unit = table_id

Esto le da una clave falsa y un atributo para identificar de qué tabla proviene el resultado. Puede usar esto para obtener la tabla original de la que proviene. (hay muchas otras formas de hacer lo mismo)

Esto le permite ejecutar una consulta, puede obtener resultados combinados.

... PERO no estoy convencido de que sea una buena idea. Porque si los resultados son asimétricos, puede perder resultados. Digamos que hay 20 resultados coincidentes de una tabla y 10 de otra. Digamos que muestra los 10 mejores resultados, ahora debido al límite, los resultados de la segunda tabla bien podrían estar ocultos debajo de la primera tabla (ejemplo extremo, en realidad, con suerte se entremezclaron). Dos consultas separadas le permiten garantizar obtener ALGUNOS resultados de cada tabla.

... así que después de todo eso. Quédate con lo que tienes. Está bien.