Mysql
 sql >> Database >  >> RDS >> Mysql

C'è un modo migliore per ottenere dati da due tabelle contemporaneamente con Sphinx/MySQL?

Non puoi davvero farla franca senza due query MySQL. Bene, potresti, semplicemente combinandoli in uno, con UNION. O creando una nuova "tabella" combinata (una vista o una vista materializzata) - ma non credo che ne valga la pena. Due query vanno perfettamente bene - come dici tu, sono state indicizzate.

Potresti usare un indice sfinge (e quindi una query di ricerca) - creando un nuovo indice combinato. Poiché dici che le tue chiavi non sono uniche, dovresti creare una nuova chiave sintetica.

es...

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

Questo ti dà una chiave falsa e un attributo per identificare da quale tabella proviene il risultato. Puoi usarlo per ottenere la tabella originale da cui proviene. (ci sono molti altri modi per fare la stessa cosa)

Ciò ti consente di eseguire una query, puoi ottenere risultati combinati.

... MA non convinto che sia una buona idea. Perché se i risultati sono asimmetrici, potresti perdere i risultati. Supponiamo che ci siano 20 risultati corrispondenti da una tabella e 10 da un'altra. Supponiamo che tu mostri i primi 10 risultati, ora a causa del limite, i risultati della seconda tabella potrebbero essere nascosti sotto la prima tabella (esempio estremo, in realtà, si spera che si siano mescolati). Due query separate, ti permettono di garantire, di ottenere ALCUNI risultati da ciascuna tabella.

... quindi dopo tutto questo. Resta con quello che hai. Va bene.