Lo que está mal con:

$term = $_POST['search'];

function buildQuery($exploded,$count,$query)
{
   if(count($exploded)>$count) 
   {
      $query.= ' AND column LIKE "%'. $exploded[$count] .'%"';
      return buildQuery($exploded,$count+1,$query);
   }
   return $query;
}

$exploded = explode(' ',$term);
$query = buildQuery($exploded,1,
'SELECT * FROM table WHERE column LIKE "%'. $exploded[0] .'%"');

y, a continuación, consulta la base de datos para recuperar los resultados en un orden determinado, en lugar de utilizar el myIsam sólo sql partido…contra?

Sería perder el tiempo el rendimiento drásticamente?

por cierto yo sé que este tema ha sido totalmente acosado y abusado.

OriginalEl autor Gal | 2009-12-24

2 Comentarios

  1. 6

    La diferencia está en el algoritmo que utiliza MySQL detrás de las escenas encontrar sus datos. Búsquedas Fulltext también permiten ordenar por relevancia. El LIKE de búsqueda en la mayoría de las condiciones se va a hacer un análisis completo de la tabla, por lo que dependiendo de la cantidad de datos, se puede ver el rendimiento de los problemas con ello. El texto de motor también pueden tener problemas de rendimiento cuando se trabaja con grandes conjuntos de filas.

    En una nota diferente, una cosa que me gustaría añadir a este código es algo para escapar de la explotó valores. Tal vez una llamada a mysql_real_escape_string()

    así que cualquier idea que pudiera obstaculizar el rendimiento más? y sí, por supuesto, tienes razón, un mysql_real_escape_string (), sería bien colocado allí.
    En mi experiencia personal como búsquedas tienden a ser más costosa. Esto es más cierto cuando el uso de comodines que no permiten mysql para optimizar la consulta para que nos de un índice en el campo.

    OriginalEl autor Chris Gutierrez

  2. 6

    Usted puede comprobar fuera de mi reciente presentación que hice para MySQL Universidad:

    http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL

    Diapositivas son también aquí:

    http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

    En mi prueba, utilizando LIKE '%pattern%' era más que 300x lento que el uso de una base de datos MySQL FULLTEXT índice. Mis datos de prueba fue de 1,5 millones de puestos de StackOverflow de octubre de volcado de datos.

    Me temo que su método de comparación fue un poco mal. COMO es más lento cuando usted está buscando en tablas grandes, pero eso no afecta a la velocidad de inserción de datos a la DB. Los partidos tiene un mejor rendimiento cuando usted está buscando, pero que afecta gravemente a la velocidad de inserción, ya que cada INSERT o UPDATE requiere reindexation. Así es revelador que la operación tiene mayor prioridad.
    Me hizo comparar el rendimiento de la indexación de un conjunto de datos existente, pero tienes razón, yo no probar el rendimiento de la inserción de más datos. No creo que MySQL del texto de la indexación de las necesidades a indexar todo el conjunto de datos al insertar — que yo sepa sólo Esfinge la necesidad de hacerlo.
    Hasta donde yo sé, MySQL índices de texto se vuelvan a indexar automáticamente después de cada operación de inserción o actualización. Si estoy equivocado, ¿me podrías decir una razón por la que en algunos casos los índices de texto de realizar la inserción de dos veces más lento? Por cierto, una nueva versión de la Esfinge soporta en tiempo real de la indexación, pero en la mayoría de los casos este tipo de índices son menos eficientes.

    OriginalEl autor Bill Karwin

Dejar respuesta

Please enter your comment!
Please enter your name here