Cual es el mejor campo o tipo de dato para guardar url's en mysql?

Iniciado por kinos, 14 Agosto 2010, 00:58 AM

0 Miembros y 1 Visitante están viendo este tema.

kinos

Hola buenas:

   Me gustaría saber cual es la mejor opción para guardar url's en una tabla de mysql.

   Con varchar(255) esta muy bien pero es de longitud muy escasa. Estoy utilizando además un campo de tipo entero que contiene el codigo hash de la url para agilizar.

   Otra opción sería usar Text. Pero... ¿se puede usar Unique e Index para este tipo de dato?
¿Podría usar un index compuesto por el codigo hash y la variable de tipo Text?
¿Mysql permite varchar mayor de 255?

:huh:

:ohk<any>

Si quieres guardar grandes cantidades de texto lo que sea, usa mediumtext o longtext.

Saludos
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

Nakp

te parece binario? usa COMPRESS() en un varbinary o similar :P para leerlo usa UNCOMPRESS()
Ojo por ojo, y el mundo acabará ciego.

Dznp

Claro que permite Varchar mayor de 255  ;)
Igual podrías usar text.

Shell Root

Sería bueno si le respondieras la pregunta que realizo acerca de ese tipo de dato.
Cita de: kinos en 14 Agosto 2010, 00:58 AM... Otra opción sería usar Text. Pero... ¿se puede usar Unique e Index para este tipo de dato?...
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kinos

#5
Citarte parece binario? usa COMPRESS() en un varbinary o similar :P para leerlo usa UNCOMPRESS()

Eso también podría ser una solución. Pero lo de compress no me gusta porque cómo tengas que comparar las url's y tengas que andar descomprimiendo y comprimiendo...

He mirado el tipo de dato TEXT y creo que caben unos 4 Gigas. Estoy utilizando este.
Lo que me fastidia... la clausula UNIQUE, porque la puedes utilizar (INDEX también) pero limitada hasta un tamaño por ejemplo:

Código (sql) [Seleccionar]
...
UNIQUE INDEX `u_url` USING HASH (`url`(333) ASC) ,
...


Tengo que comparar si ya he introducido la url para no volver a introducirla. Lo único que se me ocurre es guardar en la tabla un hash de la url y en otra columna guardar la url en un TEXT.
Entonces cuando tenga que comprobar si ya ha sido introducida, calculo el hash de la url a introducir y hacemos:

Código (sql) [Seleccionar]
Select url from tabla where url_hash=345123514;

--url es TEXT, me devolvera las que tengan el mismo hash que se supone deberian ser pocas.

Y ahora comparar caracter a caracter todas las url's que me devuelve con la que en teoría voy a introducir.

Se os ocurre una solución mejor?

Saludos.