Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe uma maneira melhor de obter dados de duas tabelas ao mesmo tempo com Sphinx/MySQL?


Você não pode realmente se safar por não ter duas consultas MySQL. Bem, você poderia, simplesmente combinando-os em um, com UNION. Ou criando uma nova 'tabela' combinada (uma visão ou uma visão materializada) - mas realmente não acho que vale a pena o esforço. Duas consultas estão perfeitamente bem - como você diz, elas são indexadas.

Você pode usar um índice esfinge (e, portanto, uma consulta de pesquisa) - criando um novo índice combinado. Como você diz que suas chaves não são únicas, teria que criar uma nova chave sintética.

por exemplo...
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

Isso fornece uma chave falsa e um atributo para identificar de qual tabela o resultado veio. Você pode usar isso para obter a tabela original de onde veio. (há muitas outras maneiras de fazer a mesma coisa)

Isso permite que você execute uma consulta, pode obter resultados combinados.

... MAS não está convencido de que é uma boa ideia. Porque se os resultados forem assimétricos, você pode perder resultados. Digamos que haja 20 resultados correspondentes de uma tabela e 10 de outra. Digamos que você mostre os 10 principais resultados, agora por causa do limite, os resultados da segunda tabela, poderiam estar escondidos abaixo da primeira tabela (exemplo extremo, na realidade, espero que eles se misturassem). Duas consultas separadas, permitem garantir, obter ALGUNS resultados de cada tabela.

... então depois de tudo isso. Fique com o que você tem. Está bem.