Estou usando o mecanismo de banco de dados MySQL. Meu aplicativo Java usa JDBC simples para recuperar dados do banco de dados.
Eu tenho o seguinte esquema de banco de dados: tabela principal com duas colunas: (ID INTEGER, dados BLOB). id é a chave primária.
A partir das ações do usuário, configurei alguns ids (x, y, ... todos inteiros) para os quais desejo buscar dados.
Qual é a maneira mais eficiente de criar uma consulta? Existe alguma diferença de desempenho se eu usar
SELECT data FROM table WHERE id IN (x, y, ...)
ou
SELECT data FROM table WHERE id = x OR id = y OR ...
ou talvez haja outra maneira de criar essa consulta?
Primeiro, tente juntar os ids em uma consulta (uma consulta sem tabela)
Veja funcionar...
Agora, JUNTE essa consulta sem tabela à tabela de dados
ou
De uma chance !!!
Não tenho certeza sobre o MySQL, mas no SQL Server a maneira mais eficiente é configurar uma tabela temporária (como com um parâmetro com valor de tabela como entrada para um procedimento armazenado) e, em seguida, fazer uma junção de tabela. Fazer um "WHERE ... IN..." normalmente será uma varredura de tabela ou índice para cada resultado, que pode ser uma ordem de magnitude mais lenta. Você pode experimentar o comando EXPLAIN para comparar - ouvi dizer que a versão mais recente do MySQL tem um EXPLAIN muito melhorado. (A diagramação do SQL Server para analisar o desempenho da consulta é MUITO MUITO melhor.)