Bem, antes de mais nada explico que não estou trabalhando com
nenhuma ferramenta de persitência de dados por um motivo simples,
porém que eu não posso contornar, MEU CHEFE NÃO QUER :lol: , mas voltando ao que interessa, bem tenho que fazer uma query de busca
palavras chaves em uma tabela, estou usando query`s sql,
buscando a palavra chave artigas, ficaria assim
SELECT * FROM WHERE CLASSIF LIKE '%artigas%' AND NUMTOMBO
LIKE '%artigas%' AND AUTOR LIKE '%artigas%' AND TITULO LIKE '%
artigas%' AND LOCAL LIKE '%artigas%'
AND DATA LIKE '%artigas%' AND NUMFLS LIKE '%artigas%' AND
ESCALA LIKE '%artigas%' AND SUPORTE LIKE '%artigas%' AND
DESCRICAO LIKE '%artigas%' AND ASSUNTO1 LIKE '%artigas%' AND OBS LIKE '%artigas%'
isso só para uma palavra chave, imagine uma busca com um monte delas,
tem como simplificar isso? ou seja, uma query mais resumida, sem eu ter que colocar um monte de AND?
Cara na verdade esse select só vai retornar resultados que tiverem com todos os campos ‘like ‘%ARTIGAS%’’.
Relembrando tabela verdade do AND:
0 e 0 = 0
0 e 1 = 0
1 e 0 = 0
1 e 1 = 1
Resumindo, você deve utilizar OR
Agora indo ao que interessa, creio que não exista outro modo, mas você poderia limitar um pouco mais os campos deste select, por exemplo data nunca vai ter ARTIGAS, NUMFLS provavelmente não, tipo tenta criar uns modos pré definidos de pesquisa pq like é um comando muito pesado pro banco, ainda mais umas par deles, :mrgreen: :mrgreen: :mrgreen:
putz, quanto ao operador boolean, é verdade, que vacilo :oops: Mas Rafael, o que vc usaria para melhorar a query, na verdade ela vai rodar um banco com uma única tabela de um 6500 registros…
então executei a query MALUCA e fiz um teste assim
System.out.println(System.currentTimeMillis());
ResultSet rs = stmt.executeQuery(query);
int i,cont;
String s;
String s1;
String s2;
cont = 0;
while (rs.next()){
i = rs.getInt(1);
s = rs.getString(4);
s1 = rs.getString(7);
s2 = rs.getString(11);
cont++;
}
System.out.println(System.currentTimeMillis());
System.out.println(cont);
O resultado foi
1122659386906
1122659388390
577
O que deu mais ou menos 1500 milisegundos para 577 registros recuperados , num sei, acho que vou deixar assim, o que vcs acham? A idéia do Wanderley2k foi boa, mas o banco ó banco é de estimação do usuário, ele tem muito orgulho de monstra-lo para os seu clientes, seria complicado explicar que o banco dele tem defeitos conceituais, além de correr o risco de perder o cliente, mas mesmo assim vou tentar falar com ele.