2 messages in com.mysql.lists.mysql-esRE: Acelerar Busqueda
FromSent OnAttachments
Vicente Lopez22 Jun 2008 15:02 
Thomas Goik - auxion.de22 Jun 2008 15:21 
Subject:RE: Acelerar Busqueda
From:Thomas Goik - auxion.de (tech@auxion.de)
Date:06/22/2008 03:21:59 PM
List:com.mysql.lists.mysql-es

Hola Vicente;

CREATE TABLE `tabla` ( `id` char(32) collate utf8_bin NOT NULL, `descripcion` char(255) collate utf8_bin NOT NULL, `ean` char(64) collate utf8_bin NOT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1;

No tienes ningún indice en tu table (menos el Primary key) Resulta a parte que estas usando innoDB, que no te deja usar FULLTEXT index, si tuvieras una table de MyISAM podrías usar fulltext CREATE TABLE `tabla` ( `id` char(32) collate utf8_bin NOT NULL, `descripcion` char(255) collate utf8_bin NOT NULL, `ean` char(64) collate utf8_bin NOT NULL, PRIMARY KEY (`id`), FULLTEXT concat_value(id, description, ean) ) ENGINE=myisam DEFAULT CHARSET=utf8 COLLATE=utf8_bin PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1;

SELECT * FROM tabla WHERE CONCAT(id,' ',descripcion,' ',ean) LIKE

'%palabra%'; Si cambias a fulltext hay que usar otro metodo para buscar, pero no puede hacer búsquedas con wildcard a la izquierda como lo estas usando

Si eso es lo que debes de tener en cuenta solo de queda en crear un campo de los valores: Create table ...

concat_value text collate utf8_bin NOT NULL, ... ;

Estos de va a ayudar mucho en tus busquedas - pero simpre van de ser lentas, debido a que nunca usaran un inidce (dado por el % a la izquirda)

Mit freundlichen Grüssen Thomas Goik