MySQL sola tabla optimización del rendimiento de la página registros de un millón de datos

antecedentes:

 

¿Tienes una página web, ya que los datos grabados hasta una sola tabla de un millón, lo que resulta en un acceso muy lento datos, el análisis de fondo Google informe periódico de tiempo de espera, especialmente la página páginas grandes no es lento.

 

entorno de prueba:

 

Vamos a ser familiarizados con la declaración básica de SQL, el siguiente vamos a ver una prueba de la tabla de información básica

 

utilizar infomation_schema
SELECT * FROM mesas donde TABLE_SCHEMA = 'dbname' Y TABLE_NAME = 'producto'

 

resultados de la consulta:

 

 

En la figura anterior podemos ver la tabla de información básica:

 

Las filas de tabla: 866 633
longitud de los datos promedio de cada línea: 5133 bytes
solo tamaño tabla: 4,448,700,632 bytes

 

Acerca de filas y tablas son unidades de tamaño de byte, podemos saber a través de la informática

 

la longitud promedio de la línea: alrededor de 5k
sola tabla Tamaño total: 4,1 g
campo de tabla tipos tiene varchar, fecha y hora, texto, etc., campo de clave principal ID

 

test

 

1. directo con arranque con límite, el estado de recuento de páginas, que he usado en el método del programa:

 

seleccionar * de arranque con límite de producto, el recuento

 

Cuando la página de inicio es pequeño, no hay problemas de rendimiento de las consultas, buscamos respectivamente de 10, 100, 1000, 10000 tiempo de ejecución para iniciar la localización (página Tomar 20), de la siguiente manera:

 

seleccione  *  de producto límite de  10 ,  20   0.016 

seleccione  *  del producto límite de  100 ,  20   0.016 

seleccione  *  de producto límite de  1000 ,  20   0.047 

seleccione  *  del producto límite de  10.000 ,  20   0,094 

 

Hemos visto que con el aumento de la grabación inicial, el tiempo también con el aumento, lo que indica límite mención de paginación con el número de página de partida es una gran relación, entonces empezamos a grabar el cambio facie 40w (es decir, registro sobre general)

 

SELECT * FROM producto límite de 400.000, 20 3.229 秒

 

Tomamos un vistazo a la última hora de grabación

 

SELECT * FROM producto límite de 866.613, 20 37.44 秒

 

No es extraño que los motores de búsqueda rastrean la página que a menudo informan de un tiempo de espera, como la página más grande de esta página claro que este tiempo es intolerable.

 

A partir del cual podemos resumir dos cosas:


1) es proporcional a la declaración de posición del límite de tiempo de consulta y registro de empezar


2) la declaración de MySQL límite es muy conveniente, pero muchos de los registros de la tabla no son adecuados para su uso directo.

 

2. problema de optimización del rendimiento de límite de la paginación

 

Que abarca el uso de la tabla de índices para acelerar la consulta de búsqueda

 

Todos sabemos que el uso de la consulta índice si la declaración contiene sólo la columna de índice (que abarca los índices), entonces esta situación en breve consultas.

 

Debido a que el uso del índice de Búsqueda de algoritmos de optimización y datos de índice en la consulta anterior, no tiene que ir a tratar los datos pertinentes, esto ahorra mucho tiempo. Además MySQL también está relacionada con la memoria caché de índice, en un momento de alta concurrencia mejor uso de los efectos almacenamiento en caché.

 

En nuestro ejemplo, sabemos que el campo id es la clave principal, contiene de forma natural el índice de clave principal defecto. Ahora vamos a ver cómo utilizar un índice de cobertura resultados de la consulta:

 

La última página de los datos de la consulta (que abarca el uso del índice contiene sólo la columna id), entre nosotros de la siguiente manera:

 

SELECT ID de producto límite de 866.613, 20 0,2 秒

 

Con respecto a la consulta de todas las columnas de 37.44 segundos para mejorar por cerca de 100 veces la velocidad del

 

Así que si tenemos que consultar todas las columnas, hay dos maneras, una es la id> = forma, y ​​el otro es para el uso se unen, mirada a la situación actual:

 

* SELECT FROM producto donde ID> = (seleccione ID de producto límite de 866 613, 1) límite 20

 

Tiempo de consulta es de 0,2 segundos, y es simplemente un salto cualitativo ah, ja, ja

 

otra forma

 

* SELECT FROM producto un JOIN (seleccione ID de producto límite de 866.613, 20) b EN a.ID = b.id

 

tiempo de consulta es muy corto, la alabanza!

 

De hecho, tanto un principio con el lugar, por lo que el efecto es el mismo.

Publicado ocho artículos originales · elogios ganado 13 · Vistas a 60000 +

Supongo que te gusta

Origin blog.csdn.net/qq_37655695/article/details/60776668
Recomendado
Clasificación