2009-12-24 8 views
5

La mayoría de los sitios que tienen algún tipo de perfil de usuario o bien se hacer algo como esto:?¿Qué es lo mejor para un perfil, un número o un nombre?

profile.php u = 123445

o de lo contrario:

profile.php u = Jason? .Davis

Así que tengo curiosidad, ¿sería más lento usar un nombre para buscar un perfil con php/mysql vs. usar un número para buscar un registro de perfil?

Respuesta

12

Una búsqueda de cadena sería probablemente más lenta que una numérica probablemente en cada caso. Pero la diferencia es tan pequeña que nunca se notará. No hasta que tenga un realmente gran cantidad de usuarios.

Pero eche un vistazo SO: Hacen ambas cosas.

http://stackoverflow.com/users/187606/pekka 

El número para un acceso de base de datos ultrarrápido.

El nombre para un aspecto agradable y visibilidad del motor de búsqueda.

No hay conflictos con dos nombres, porque la identificación es lo que se utiliza para buscar el registro.

Creo que es lo mejor de ambos mundos y el óptimo.

Requiere reescritura de URL, sin embargo.

+0

¿Por qué un número es más rápido que un nombre en una búsqueda de db? (Suponiendo que ambos estén indexados). –

+0

No soy un experto en bases de datos, pero el sentido común me dice que incluso un índice (que es la conversión de una parte de la cadena a un número de registro) siempre debe ser más lento que una referencia directa al número de registro. Insignificantemente más lento, pero aún más lento. Corrígeme si estoy equivocado. –

+3

@Esteban, es probable que un número se almacene como un entero de ancho fijo (digamos 4 bytes) en oposición a una cadena de 32 bytes (por ejemplo). La comparación sería más rápida ya que hay menos datos, pero, lo que es más importante, cada página del índice almacenaría más registros, lo que generaría menos E/S de disco. – paxdiablo

-1

Si el nombre es una clave en la base de datos, los tiempos de búsqueda no deberían ser demasiado diferentes, y usar un nombre le daría URLs más atractivas, por lo que le sugiero usar los nombres.

+0

El nombre mejor no es una clave en una base de datos, o tendrá un problema cuando otro, por ejemplo John Smith intenta abrir una cuenta. –

+0

A menos, por supuesto, que esté satisfecho con los nombres de usuario como John.Smith.76352574763 :-) – paxdiablo

+0

Espere, ¿quiere decir que la mayoría de los sitios web le permiten abrir dos cuentas con el mismo nombre? –

2

El nombre será más legible y fácil de depurar, pero no se garantiza que los nombres sean únicos, por lo que tendrá que ser aumentado por un unificador (creo que esto es en realidad una palabra, utilizada en la unificación), p. agregar dígitos al final del nombre.

0

Si utiliza un índice DB, no debería ser notablemente más lento. ¿Pero qué pasa si tienes dos Jason Davises? Los UID son agradables porque puedes garantizar la singularidad.

1

El problema principal que veo al usar un nombre no es la velocidad de búsqueda, sino el hecho de que no se puede tener a Jason Davis de Omaha, Nebraska y otro Jason Davis de Perth, Australia Occidental.

Por supuesto, use el nombre en todo lo que el mundo puede ver pero, para asegurar la exclusividad, usaría una identificación entera. Esto también puede acelerar las consultas de la base de datos, pero eso sería una preocupación secundaria para mí. Es dudoso que usar una cuerda cause demasiada angustia a su aplicación.

0

Ambos son incorrectos. No desea obtener profile.php dado u = 12345 como parámetro. Desea obtener el perfil del usuario 12345. Entonces use/profile/12345.

leer algo sobre el descanso, es fresco :)

0

sería más lenta de usar un nombre para buscar un perfil de [...]?

Si lo hubiera probado, habría descubierto que no hay suficiente diferencia para que valga la pena preocuparse. Si le preocupa el rendimiento, esto debería ser lo último que le preocupe.

Cuestiones relacionadas