Pregunta

Estoy construyendo un sitio comunitario donde el inicio de sesión estará por correo electrónico y los miembros podrán cambiar su nombre/apodo.

¿Crees que debería mantener el nombre/nombre del miembro en la tabla de mis miembros con otras propiedades del miembro o crear otra tabla, escribir el nombre/nombre del miembro en esa tabla y la identificación del miembro asociado?

Estoy a favor de la segunda opción porque creo que sería más rápido extraer el nombre de los miembros.

¿Es correcto/mejor manera?

Actualización: la razón es para otra tabla es que necesito extraer el nombre de usuario para diferentes secciones. Por ejemplo, foros. ¿No sería más rápido consultar una pequeña mesa para cada nombre de usuario para cada publicación en un tema?

¿Fue útil?

Solución

¿Por qué crees que la segunda opción sería más rápida?

Si el apodo es una relación uno a uno requerida con la identificación del miembro, el lugar apropiado para almacenarlos está en la misma tabla. Esta sigue siendo una búsqueda indexada de registro único, por lo que debería ser más o menos tan rápido como su otra opción.

De hecho, esta solución probablemente sería más rápida, ya que podría obtener el apodo en el mismo Seleccione a medida que obtiene la otra información.

Actualización para responder la actualización de la pregunta:

La segunda tabla no es más pequeña en términos del número de filas. Los principales factores en una búsqueda SQL son 1) número de registros en la tabla y 2) número de posibles coincidencias de la parte indexada de la búsqueda.

En este caso, el número de registros en su tabla más pequeña sería exactamente el mismo que la tabla más grande. Y el número de posibles registros coincidentes devueltos por el índice siempre será 1 porque la identificación del miembro es único.

El número de columnas en la tabla que está buscando generalmente es irrelevante para el tiempo necesario para devolver los datos (el número de columnas que realmente enumera en la declaración de selección puede tener un efecto, pero eso es lo mismo sin importar qué tabla esté buscando).

Las bases de datos SQL son muy, muy buenas para encontrar datos. Estrucite sus datos correctamente y deje que la base de datos se preocupe por recuperarlos. La optimización prematura es, como dicen, la raíz de todo mal.

Otros consejos

Lo mantendría una mesa y establecería una restricción única en el correo electrónico en esa tabla.

No puedo ver una sola ventaja al agregar otra tabla.

Vaya con la primera opción: mantenga el nombre/apodo en la tabla de miembros. No hay necesidad de introducir una tabla adicional y la sobrecarga de una unión que la acompaña, en este caso.

Sí, asociar la identificación del miembro a las otras propiedades es el camino correcto.

Simplemente puede crear un índice de nombre para acelerar sus consultas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top