2 messages in com.mysql.lists.mysql-esRE: Acelerar Busqueda| From | Sent On | Attachments |
|---|---|---|
| Vicente Lopez | 22 Jun 2008 15:02 | |
| Thomas Goik - auxion.de | 22 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
-- Lofox GmbH Geschäftsführerin: Evelyn Fuchs Im Kamperholz 48 44805 Bochum - Germany Amtsgericht Bochum HRB 7042 USt-IdNr.: DE215698227 St.-Nr. Bochum 306/5885/0172




