Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/07/2015, 06:13
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con los tags del post.

Bueno, es uno de esos casos medio espantosos de performance. Lamentablemente es muy habitual...
Lo que tienes es lo que se denomina "campo multivaluado", que están prohibidos en las bases de datos relacionales, pero infortunadamente es la forma en que la inmensa mayoría de los desarrolladores sin bases firmes en arquitectura de datos pone los campos de "tags",.
En fin.
Mira, en forma genérica, todos los DBMS, cualquiera que uses reconocerá esta sinaxis:

Código SQL:
Ver original
  1. SELECT *
  2. FROM blog_posts
  3. WHERE post_tags LIKE '%android%'
El problema es que es un método súmamente ineficiente. Su performance es un espanto para cualquier DBMS y especialmente con tablas que contengan muchos registros, porque lo que hace esa consulta es un full table scan (lectura completa de toda la tabla), para analizar uno a uno ese campo en todos los registros.

Por otro lado, si usases por ejemplo MySQL, existe una función capaz de hacer un barrido más performántico, e incluso se puede plantear usar indices FULLTEXT, que podrían mejorar todo.

Nota: Con el LIKE usado con dos comodines, como te lo pongo, no hay índice que sirva.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)