Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/09/2010, 13:56
Sofmundi
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Ayudita con esta consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En cuanto a la sentencia que se debe usar, si la búsqueda debe hacerse sobre varios campos al mismo tiempo, es mejor primero ver qué campos son los que se usarán para buscar, porque el resultado y la dificultad de crear la sentencia variarán enormemente según el caso:
- Si el dato a buscar es de tipo alfanumérico, por ejemplo, no tiene sentido invocar campos de fecha, numéricos o booleanos. Esto ya nos permite reducir las posibilidades a sólo campos de caracteres, textos o enum.
- Si el tipo de datos es numérico puede que sólo nos interesen los campos numéricos. Pero si ese numero corresponde a cualquier cosa, sólo quedan fuera los booleanos o de fecha.
- Si son de fecha, puede que sólo queden los de fecha, o si la fecha puede estar en un texto, habrá que incluir todos los campos cuya longitud sea mayor o igual a 8 (longitud de una fecha).

Como verás, esto puede implicar que debas crear más de una sentencia a usar, usando aquella que se ajuste mejor a la búsqueda a realizar.
Usar una sola sentencia puede terminar siendo sumamente ineficiente. No existen sentencias genéricas que sean óptimas para ningún tipo de bases de datos. Yo tengo aplicaciones que sólo tienen 12 tablas y usan más de 50 tipos de construcciones de sentencias diferentes, simplemente para consultar los datos de diferentes formas.

Mientras precisa sea la creación de la consulta, incluso si esta es variable, más eficientes se vuelven las consultas.

Finalmente, en cuanto a la sentencia misma, para tu caso no es LIKE lo mejor que puedes usar, sino las búsquedas de texto completo, que te pueden devolver un conjunto de registros donde aparece lo buscado, jerarquizados de mayor relevancia a menor relevancia. Es el caso de las funciones de búsqueda de texto completo (Full-Text), que tiene esta forma:

que tiene, por ejemplo este uso:

Código MySQL:
Ver original
  1. SELECT * FROM articles
  2. WHERE MATCH (title,body) AGAINST ('database');
En este caso, en MATCH van las columnas contra las que se realizará la busqueda.

Esta forma tiene dos limitaciones:
1) Sólo funciona cuando se crean índices FULLTEXT, por ejemplo:
Código MySQL:
Ver original
  1. mysql> CREATE TABLE articles (
  2.     ->   title VARCHAR(200),
  3.     ->   body TEXT,
  4.     ->   FULLTEXT (title,body);
2) Sólo se pueden crear estos índices en tablas de tipo MyISAM. Las InnoDB no sirven.

Prueba el caso y veremos a partir de allí.
Son solo campos de solo letras y un campo que seria el de la cedula o identificacion, voy a probar a ver que pasa gracias, pero en si lo que busco es buscar solo informacion tipo texto y numerico, los campos en donde se buscaria la informacion seria en " Tc02Nombres - Tc02Apellidos - Tc02Cedula" esos tres si alguien me podria ayudar con esa parte gracias

Última edición por Sofmundi; 19/09/2010 a las 14:03