| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 11:31:25
|
Luiz-SP
JavaChild
![[Avatar]](/images/avatar/c90727d8411598cb2f8db.jpg)
Membro desde: 10/01/2004 23:20:19
Mensagens: 131
Localização: São Paulo
Offline
|
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 , 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
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?
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 11:45:59
|
rmarin
JavaEvangelist
![[Avatar]](/images/avatar/46e0eae7d5217c79c3ef6b4c212b8c6f.jpg)
Membro desde: 13/07/2005 09:14:45
Mensagens: 360
Localização: São Paulo
Offline
|
Luiz-SP wrote:
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%'
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,
Abraço.
This message was edited 1 time. Last update was at 29/07/2005 11:48:30
|
Roberto Marin
__________________________________________
Odeio auto-nerds! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 11:48:10
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Essa query vai levar 10 anos para rodar em qq base de dados com uma quantidade razoavel de registros.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 11:53:50
|
Luiz-SP
JavaChild
![[Avatar]](/images/avatar/c90727d8411598cb2f8db.jpg)
Membro desde: 10/01/2004 23:20:19
Mensagens: 131
Localização: São Paulo
Offline
|
putz, quanto ao operador boolean, é verdade, que vacilo 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....
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 12:25:00
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Bom, faca o teste.. mas LIKE nao eh performatico.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 12:53:59
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Ainda mais um LIKE que começa com '%'. Os índices vão para a meretriz que deu a luz
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 13:46:00
|
Wanderley2k
Thread.start()
Membro desde: 18/02/2004 17:37:43
Mensagens: 44
Offline
|
Neste caso seria melhor criar uma tabela de dicionário e fazer um relacionamento entre o dicionario e as tabelas?
Senão me engano o JForum usa algo do tipo. Alguém tem uma referência boa para isso?
|
--
Wanderley Guimarães
Dynamic Programming: From novice to advanced |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 15:02:54
|
Luiz-SP
JavaChild
![[Avatar]](/images/avatar/c90727d8411598cb2f8db.jpg)
Membro desde: 10/01/2004 23:20:19
Mensagens: 131
Localização: São Paulo
Offline
|
então executei a query MALUCA e fiz um teste assim
O resultado foi
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.
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2005 15:55:57
|
Wanderley2k
Thread.start()
Membro desde: 18/02/2004 17:37:43
Mensagens: 44
Offline
|
Luiz-SP,
Na verdade não tem erro conceitual. O que pode existir é uma adequação do que existe para um modelo de busca mais sofisticado.
Vou colocar um trecho da materia da Revista Mundo Java, página 52:
Consultas não são realizadas com simples queries SQL que utilizam 'LIKE'. JForum indexa cada palavra separadamente e associa a mesma às mensagens. Essa estratégia, apesar de requerer mais espaço de armazenamento, é muito mais rápida...
Acho que seria interessante dar uma olhada no código do JForum para saber como ele faz isto e quão isto é esperto também.
Mas continuando pedindo para os SpamMan darem referencias legais sobre este assunto.
|
--
Wanderley Guimarães
Dynamic Programming: From novice to advanced |
|
|
 |
|
|