2012-09-03 19 views
5

Estoy guardando texto en la base de datos, digamos 1000 caracteres. Pero solo muestro los primeros 200 caracteres.¿Qué método de mysql es rápido?

Método 1
pudiera salvar primeros 200 caracteres en una columna y el restante en la segunda columna de la tabla de SQL

Método 2
puedo guardar todo en una columna y mientras mostrando I can consulta para 200 caracteres

+0

creo ** ** Método 1 – Daya

+3

déjeme reformular nuestra pregunta:? 'Chicos, alguien puede hacer que la investigación sobre perfiles de base de datos para mis necesidades';) Y lo –

Respuesta

4

Sería "limpiador" para almacenar todo en 1 columna y se puede seleccionar sólo los primeros 200 caracteres como este

select substring(your_column, 1, 200) as your_column from your_table 
+1

sobre la productividad? ¿Sería más rápido con 10 000 solicitudes por segundo invocar el método DB 'substring()' que simplemente seleccionar una celda? –

+0

'substring' es una función bastante rápida. Dudo que haya problemas de rendimiento con esta simple función. Pero no lo intenté con una carga tan pesada. –

+0

Considere los resultados de búsqueda de Google, hace algo como esto. entonces creo que la subcadena() puede ser usada – ZenOut

1

Realmente es irrelevante, pero si se intenta optimizar, entonces el método 1 es mejor, siempre y cuando se limite su consulta a esa columna (o solo consulte estas columnas que realmente necesita), porque hacer substring en el lado del servidor requiere tiempo y recursos (multiplicado por el número de solicitudes ...). Método 2 es más limpio, pero se le optimizar el tiempo por lo que el método 1.

0

Esto se reducirá a una de dos cosas:

Si usted está tirando toda la fila de nuevo en PHP y sólo muestran los primeros 200 Chars, entonces la velocidad de su red será potencialmente un cuello de botella en los datos de extracción:

Si, por otro lado, tiene dos columnas, es posible que tenga un cuello de botella en su unidad de acceso que recupera los datos a su PHP - filas más largas can causan un acceso más lento a múltiples filas.

Esto se reducirá a un pesaje específico del servidor. Realmente dependerá de cómo se desempeñe su servidor. Sugeriría que se ejecuten algunos escenarios en los que el código intente retroceder unos cientos de miles de cada uno para ver cuánto tarda.

0

Método 2.

En primer lugar, el almacenamiento duplicado de los datos suele ser mala (la desmoralización). Esto es ciertamente cierto en este caso.

Segundo, tomaría más tiempo escribir en dos tablas que en una.

En tercer lugar, ahora ha hecho que las actualizaciones y su eliminación sean vulnerables a las incoherencias molestas (vea el n. ° 1).

En cuarto lugar, a menos que esté buscando los primeros 200 caracteres para texto, obtener datos será el mismo para ambos métodos (simplemente seleccione una cadena secundaria de los primeros 200 caracteres).

En quinto lugar, incluso si está buscando los primeros 200 caracteres, puede indexarlos y la velocidad de recuperación debe ser idéntica.

En sexto lugar, no desea un diseño de base de datos que limite su UX, ¿qué sucede si necesita cambiar a 500 caracteres? Tendrá mucho trabajo por hacer.

Este es un caso muy obvio de lo que no se debe hacer en el diseño de la base de datos.

referencia: como respondida por Joe Emison http://www.quora.com/MySQL/Which-mysql-method-is-fast

Cuestiones relacionadas