Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

2010-09-03

MySQL Como optimizar resultados aleatorios sin perder perforan.

Crear un RAND que sea optimo cuando tenes muchos registros en la base de datos. Ya que el ejemplo tiplico que esta por todos lados cuando tenes una base de datos muy grande pierder performan.

Ejemplo tipico de una fila aleatoria QUE NO ES OPTIMO:

  1. “SELECT * FROM producto ORDER BY rand(” . time() . ” * ” . time() . “) LIMIT 3″;

  2. # O este otro ejemplo
  3.  
  4. “SELECT * FROM producto ORDER BY rand() LIMIT 3″;

Ejemplo 1: Tiene mejor rendimiento cuando tenes muchos mas datos "ES OPTIMO".

  1. SELECT
  2. RAND() as aleatorio,
  3. producto.*
  4. FROM
  5. producto
  6. WHERE
  7. producto.id < (SELECT  ABS(FLOOR(MAX(producto.id)/RAND((CAST(SECOND(NOW())AS UNSIGNED)+1)/RAND()))) FROM producto LIMIT 1)
  8. ORDER BY aleatorio
  9. LIMIT 3 
 Ejemplo 2: Esta tiene un poco mas de performan frente al ejemplo anterior

  1. SELECT  
  2. RAND() as aleatorio, 
  3. P.* 
  4. FROM producto P 
  5. JOIN (SELECT ABS(FLOOR(MAX(producto.id)/RAND((CAST(SECOND(NOW())AS UNSIGNED)+1)/RAND()))) AS ID FROM producto LIMIT 1) AS x ON P.id < x.ID 
  6. ORDER BY aleatorio 
  7. LIMIT 3;
 Ejemplo 3.A: Este tiene mas performan que el ejemplo 1 y 2.


  1. SELECT * FROM 
  2. (SELECT RAND() as aleatorio, producto.* FROM producto WHERE productoid like '%' LIMIT 100) AS P 
  3. ORDER BY P.aleatorio 
  4. LIMIT 3


Ejemplo 3.B: Si queres tener mejor performan en el "Ejemplo 3.A"; no tenes que llamar a todos los campos " producto.* " solo a los que necesitas. 


  1. SELECT * FROM 
  2. (SELECT RAND() as aleatorio, productoid, marca, nombre FROM producto WHERE productoid like '%' LIMIT 100) AS P 
  3. ORDER BY P.aleatorio 
  4. LIMIT 3

    2010-09-01

    AeroSQL: Administrador de MySQL en web

    AeroSQL es una aplicación web gratuita y de código abierto, para gestionar bases de datos MySQL a través de un entorno web. Ofrece la posibilidad de gestionar bases de datos de distintos servidores en la misma sesión. La aplicación esta escrita en PHP y usa ExtJS.
    AeroSQL
    La característica principal del producto es una gestión intuitiva y muy similar a productos comerciales de escritorio. El resultado de las consultas se muestra en una grid editable: puedes actualizar las celdas y guardar los cambios.
    Otras características:
    • Administración de múltiples servidores.
    • Consultas En vivo (Live Queries): si se realiza un SELECT en una sola tabla y el resultado contiene un índice único, AeroSQL te permitirá actualizar el conjunto de resultados, es decir, el resultado no es de sólo lectura.
    • SQL Monitor: ver todos los comandos SQL emitidas por el script del lado del servidor.
    • Multi ejecución de consultas: puede ejecutar un lote de consultas SQL delimitadas por un punto y coma.
    • Corregir el manejo de valores NULL.
    • El usuario puede seleccionar qué columnas se muestran al editar una tabla de base de datos. Esto hace que la posterior navegación a través de filas de la tabla sólo se realizará a través de las columnas visibles, lo que reduce el tráfico de red.
    • Las columnas de tipo TEXT se pueden editar en una ventana diferente co un textarea y un editor WYSIWYG de HTML.
    AeroSQL » »