Foros del Web » Programando para Internet » PHP »

Optimizar una Query

Estas en el tema de Optimizar una Query en el foro de PHP en Foros del Web. Hola a todos, Mi servidor me acaba de mandar un mensaje diciendo que me detecto una "slow query" y ue no estan permitidas en el ...
  #1 (permalink)  
Antiguo 07/10/2008, 06:12
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Exclamación Optimizar una Query

Hola a todos, Mi servidor me acaba de mandar un mensaje diciendo que me detecto una "slow query" y ue no estan permitidas en el servidor, que la optimize lo mas pronto posible.
La consulta mysql es la siguiente:

Código PHP:
    $sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM archivos WHERE id='".$_GET['id']."'"
Alguien sabe como puedo "optimizarla"?

Muchas gracias, saludos!
  #2 (permalink)  
Antiguo 07/10/2008, 06:31
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Optimizar una Query

¿id es clave? Deberías tener al menos una

Saludos.
  #3 (permalink)  
Antiguo 07/10/2008, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Optimizar una Query

También lo más probable es que si archivo_binario es un LOB, se tarde hacer la transferencia y por eso se tarda.

Esto es resultado de guardar archivos binarios en la base de datos, muchos hosts no permiten eso y por eso tienes que recurrir a guardar los archivos en el sistema de archivos local.

Saludos.
  #4 (permalink)  
Antiguo 07/10/2008, 11:58
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Optimizar una Query

que queres decir con clave? que tenga atributo primary key o eso? porq id es auto_increment

Con respecto a lo que me dijo gator, creo que esta permitido el campo blob, si no no lo pondrian como opcion en phpmyadmin, o no?

Si tengo que pasar todo a el FTP es un megagarron, me caga todo el laburo hecho
  #5 (permalink)  
Antiguo 07/10/2008, 12:18
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Optimizar una Query

Cita:
Iniciado por valenti77 Ver Mensaje
que queres decir con clave? que tenga atributo primary key o eso? porq id es auto_increment

Con respecto a lo que me dijo gator, creo que esta permitido el campo blob, si no no lo pondrian como opcion en phpmyadmin, o no?

Si tengo que pasar todo a el FTP es un megagarron, me caga todo el laburo hecho
Pues va a ser ese el problema, si el campo archivo_binario es de tipo BLOB, vas a tener problemas siempre y en la mayoría de hostings, lo ideal seria cambiar el esquema de la base de datos, y guardar la ruta del fichero y no el fichero en si y subir el fichero con move_upload_file o por ftp.

saludos
  #6 (permalink)  
Antiguo 07/10/2008, 12:20
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Optimizar una Query

claro, porque ese campo blob, es el subido por el usuario, es decir, existe la posibilidad de que un usuario, suba hacia mi servidor mediante php?
  #7 (permalink)  
Antiguo 07/10/2008, 12:37
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Optimizar una Query

Cita:
Iniciado por valenti77 Ver Mensaje
claro, porque ese campo blob, es el subido por el usuario, es decir, existe la posibilidad de que un usuario, suba hacia mi servidor mediante php?
si, usando las funciones nativas de php atacando un servidor ftp (si tienes acceso ftp al servidor, claro) o puedes subir el fichero con las funciones move_uploaded_file luego en la base de datos, guardas la ruta al fichero que has subido y no el fichero en si, con el consiguiente ahorro de espacio, ya sea para las consultas, como para hacer copias de seguridad.
  #8 (permalink)  
Antiguo 07/10/2008, 14:07
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Pregunta Respuesta: Optimizar una Query

Holass, ya volvi y tengo un codigo:

Código PHP:
<?php
// Primero creamos un ID de conexión a nuestro servidor
$cid ftp_connect("servidor");
// Luego creamos un login al mismo con nuestro usuario y contraseña
$resultado ftp_login($cid"usuario","contraseña");
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
if ((!$cid) || (!$resultado)) {
echo 
"Fallo en la conexión"; die;
} else {
echo 
"Conectado.";
}
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al
//servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
ftp_pasv ($cidtrue) ;
ftp_chdir($cid"directorio destino");
$local $_FILES["archivo"]["name"];
//nombre temporal del archivo mientras dura la transmisión
$remoto $_FILES["archivo"]["tmp_name"];
$tama $_FILES["archivo"]["size"];
$destino="directorio destino";
$ruta "rutadelarchivo" $local;
// Subimos el temporal
if ( move_uploaded_file $_FILES 'archivo' ][ 'tmp_name' ], $destino '/' $_FILES 'archivo' ][ 'name' ])){
//Guardamos la ruta en la base de datos
$conexion=mysql_connect("","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("a3344304_posts",$conexion) or die("No se puede seleccionar BD");
$sql"Insert into Fotos (direccion) value('$ruta')";
$consulta=mysql_query($sql)or die("No se pudo ejecutar la consulta");
mysql_close($conexion);
echo 
"Subido exitosamente";
}
// Si no se pudo subir el temporal
else {
echo 
"no se pudo subir el archivo " $local;
}
echo 
"Ruta: " $ruta;
//cerramos la conexión FTP
ftp_close($cid);
?>
lo unico que tengo dos cveces la ruta final, pero no la saco por miedo jaja, igual no me sube el archivo, tan mal esta?
Lo modifique de uno que encontre en otra pagina, pero no me parecia muy confiable y le agregue la funcion que me dijeron aca, move_uploaded_file...
  #9 (permalink)  
Antiguo 07/10/2008, 14:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Optimizar una Query

No entiendo para conectarte a un ftp si no vas a enviar nada.. Por otro lado busca en el foro, en la seccion de aportes puedes encontrar programas explicados de como subir archivos.

Saludos.
  #10 (permalink)  
Antiguo 07/10/2008, 14:53
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Optimizar una Query

uy, no estoy enviando nada? uhh, que garron, no la tengo muy clara, se nota? jaja ahora me fijo bien si encuientro por aca algo y posteo la solucion, gracias!
  #11 (permalink)  
Antiguo 07/10/2008, 17:45
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Optimizar una Query

para un fopen, al pasar el parametro de nombre de archivo, en caso de que sea una variable, va con comillas tmb?


Código PHP:
$consulta mysql_query($sql,$conexion);
$imagen mysql_fetch_array($consulta);
$archivo=fopen('$imagen','r'
Dondeen la consulta etraigo la ruta de la imagen guardada para modificarla, es asi?
  #12 (permalink)  
Antiguo 07/10/2008, 19:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Optimizar una Query

Recuerda que si usas comillas simples, las variables no se expanden, necesitas usar comillas dobles, aunque para abrir dentro de la función solamente pasando $imagen basta.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:39.