Cómo usar índices para mejorar el rendimiento de las consultas MySQL

4.7 / 5

Cómo usar índices para mejorar el rendimiento de las consultas MySQL

5/5

Este artículo analiza los índices y cómo puede usarlos para mejorar el rendimiento de las consultas a la base de datos MySQL.

Tabla de contenido
Rendimiento de la base de datos e índices
Analizando consultas de bases de datos
Agregar, eliminar y ver índices en una tabla

RENDIMIENTO DE LA BASE DE DATOS E ÍNDICES

Los índices de base de datos en MySQL le permiten acelerar el rendimiento de las instrucciones de consulta SELECT. Para tablas pequeñas, un índice no ayuda mucho. Sin embargo, si tiene tablas con una gran cantidad de datos, los índices pueden mejorar drásticamente el rendimiento.

Los siguientes comportamientos son todos indicios de que las tablas pueden beneficiarse al agregar índices:

Su sitio se carga muy lentamente o no se carga en absoluto.
Una aplicación no puede conectarse a su base de datos.
Las consultas de la base de datos están respaldadas.
Si experimenta alguno de estos problemas, debe analizar las consultas de su base de datos y considerar agregar índices.

Si tiene un VPS administrado o un servidor dedicado Flex administrado, un mayor tamaño del búfer de clasificación también puede ayudar, además de agregar índices. Abra un ticket en el Portal del cliente en para analizar esta opción con nuestro Guru Crew.

ANALIZANDO CONSULTAS DE BASE DE DATOS

Para determinar qué tablas pueden beneficiarse del uso de índices, debe analizar las consultas de su base de datos. La instrucción EXPLAIN SELECT te ayuda a hacer esto. Para analizar las consultas de la base de datos, siga estos pasos:

Inicie sesión en su cuenta con SSH.
En el símbolo del sistema, escriba el siguiente comando, reemplazando el nombre de usuario con el nombre de usuario de su cuenta de A2 Hosting y la base de datos con el nombre de la base de datos:
mysql -u nombre de usuario -p base de datos
En el mensaje Ingresar contraseña, escriba su contraseña. Aparece el indicador mysql>.
Escriba el siguiente comando SQL

EXPLAIN SELECT * FROM table_name WHERE conditions \G
Si escribe su propio código de aplicación, ya conoce las instrucciones SELECT que usa para recuperar datos. Si está utilizando una aplicación de terceros, como WordPress o PrestaShop, es posible que deba examinar el código fuente o los registros de la base de datos para determinar las declaraciones SELECT exactas que se utilizan para recuperar datos.
El resultado de la instrucción EXPLAIN SELECT muestra cómo el optimizador de consultas MySQL ejecutará la consulta. Por ejemplo, considere el siguiente resultado:

mysql> EXPLAIN SELECT title FROM employees WHERE lastname LIKE ‘T%’ \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: employees
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 142
Extra: Using where
1 row in set (0.00 sec)

En este ejemplo, salida:

Posibles_keys y valores clave son NULL, lo que indica que MySQL no tiene un índice que pueda usar para esta consulta.
El valor de las filas indica que MySQL leerá 142 filas para esta consulta. Si hay 142 filas en total en la tabla, esto significa que MySQL debe examinar cada fila para generar el conjunto de resultados. Esto podría llevar bastante tiempo para una mesa grande.
Por otro lado, si creáramos un índice llamado index_name para la columna de apellido, MySQL podría generar el siguiente resultado para la misma consulta:

mysql> EXPLAIN SELECT title FROM employees WHERE lastname LIKE ‘T%’ \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: employees
type: range
possible_keys: index_name
key: index_name
key_len: 22
ref: NULL
rows: 17
Extra: Using where; Using index
1 row in set (0.00 sec)

Como puede ver, los possible_keys y los valores clave indican que MySQL ha encontrado un índice que puede usar para optimizar la consulta. Además, MySQL leerá solo 17 filas para generar el conjunto de resultados, en lugar de las 142 filas. (Esto significa que la tabla tiene 17 filas donde el apellido comienza con “T”). Por último, el valor Extra también indica que MySQL usará un índice para la consulta.

AÑADIR, ELIMINAR Y VER ÍNDICES EN UNA TABLA

Después de analizar las consultas de la base de datos y determinar dónde están los cuellos de botella de rendimiento, está listo para agregar índices. Para hacer esto, siga estos pasos:

Inicie sesión en su cuenta con SSH.
En el símbolo del sistema, escriba el siguiente comando, reemplazando el nombre de usuario con el nombre de usuario de su cuenta de A2 Hosting y la base de datos con el nombre de la base de datos:
mysql -u nombre de usuario -p base de datos
En el mensaje Ingresar contraseña, escriba su contraseña. Aparece el indicador mysql>.
Para agregar un índice a una tabla, escriba el siguiente comando SQL. Reemplace table_name con el nombre de la tabla, index_name con el nombre del nuevo índice (que puede ser cualquier cosa que desee) y table_column con el nombre de la columna de la tabla para la que desea agregar el índice:

ALTER TABLE table_name ADD INDEX index_name (table_column);
Aunque los índices pueden mejorar el rendimiento, los índices también pueden afectar negativamente el rendimiento si hay demasiados. Esto se debe a que cuanto más índices tiene una tabla, más trabajo debe hacer MySQL para mantenerlos actualizados. El truco es encontrar el equilibrio adecuado entre suficientes índices para mejorar el rendimiento, pero no tantos que afecten negativamente el rendimiento.
Para eliminar un índice de una tabla, escriba el siguiente comando SQL. Reemplace table_name con el nombre de la tabla y reemplace index_name con el nombre del índice que desea eliminar:

ALTER TABLE table_name DROP INDEX index_name;
Para ver todos los índices de una tabla, escriba el siguiente comando SQL. Reemplace table_name con el nombre de la tabla:

MOSTRAR ÍNDICE DE nombre_tabla \ G
Después de crear un índice, debe usar la instrucción EXPLAIN SELECT nuevamente para ver cómo se ven afectadas las consultas. Además, debe continuar supervisando el rendimiento de la base de datos para ver si hay mejoras. Es posible que deba ejecutar una serie de pruebas para encontrar la cantidad óptima de índices para su base de datos.

MÁS INFORMACIÓN

Para obtener más información sobre la optimización e índices de MySQL.
Para obtener más información sobre la declaración EXPLAIN.

ARTÍCULOS RELACIONADOS

Conectando a MySQL desde la línea de comando
Aprenda cómo conectarse a MySQL desde la línea de comandos utilizando el programa mysql con esta guía que incluye instrucciones detalladas, fragmentos de código y enlaces a artículos relacionados.

Optimización y reparación de bases de datos MySQL con phpMyAdmin
Aprenda a usar phpMyAdmin para optimizar y reparar bases de datos MySQL.

    Contacta sin compromiso

    ¿Cómo podemos ayudarte? No importa el código, no importa el problema, estamos aquí para ayudarte. En cualquier caso, revisaremos tu mensaje y te daremos nuestra opinión rápidamente.







    *Tus datos están seguros porque cumplimos con el RGPD (Reglamento General de Protección de Datos) y te dejo esta información que debes saber:

    • Responsable: Ayesa Digital SLU
    • Finalidad: Responderte al correo que vas a enviar.
    • Legitimación: Consentimiento.
    • Destinatarios: tus datos de contacto se almacenarán en nuestra base de datos.
    • Derechos: Cambios, rectificaciones, borrados, escríbenos a administracion@phpninja.es

    Puedes consultar la información adicional y detallada sobre Protección de Datos en política de privacidad.

    Workcation

    Muy profesionales. Resuelven rápido e informan en todo momento del estado del trabajo. 100% recomendado.

    Conchetta Alonso

    CEO at Workcation

    4.7/5 Leer opiniones sobre Php Ninja en Google reviews

    ¿Cómo podemos ayudarte?

    Opiniones

    ¿Qué han dicho nuestros clientes?

    • Very happy with the service. They solved a problem well (web down, no possibility of access to wordpress), they did it quickly and they were also very kind. The entire process (including payment) was very clear, transparent and effective. Highly recommended.

      thumb Joan Cos Codina
      29/03/2022

      Muy profesionales. Resuelven rápido e informan en todo momento del estado del trabajo. 100% recomendado.

      thumb Conchetta Alonso
      17/06/2021

      Necesitaba hacer unos arreglos en mi página web que estaba bloqueada hace meses y necesitaba unos cambios estructurales, me sentí en todo momento super bien atendida, trato fenomenal, gran profesionalidad y soluciones rápidas, buena relación calidad / precio. Muy contenta y satisfecha! Repetiría sin dudar en caso de necesidad. Muy recomendable.

      thumb Valeria Murroni
      23/07/2021
    • Muy buen servicio desde el primer momento. Trato agradable y cercano. En un par de días te dejan la web optimizada y veloz. 100% recomendable. Gracias

      thumb Sergio Carbonell López
      25/10/2021

      Good treatment, speed, efficiency ... great professionals !!. We came from bad experiences with so-called experts, which only made us lose money and time. And instead, they have performed a Malware cleanup in record time for the dates that are. Of course, it has been a success to find such a serious and efficient company. Special mention to Marc, for his excellent customer service. We will repeat and recommend them. Greetings.

      thumb Clibema instaladores y lampistas
      27/12/2021

      The service was fast and professional. Besides being very friendly. Thank you very much and I highly recommend it!

      thumb Carlos Aguilar
      08/03/2021
    • Very good job! When they started to think that fixing our website was mission impossible we found PhpNinja, great professionals. Very good attention and service! Web ready!

      thumb Equànima Coaching Equinoteràpia Ecoturisme
      21/10/2020

      Encantada con el servicio, llevaba tiempo buscando profesionales de este nivel.

      thumb Ari Lopez
      10/09/2020

      Soluciones rápidas y efectivas. ¡100% recomendable!

      thumb Jonatan Murcia
      19/10/2021
    • They work very well as web designers.

      thumb parloitaliano associazione culturale parloitaliano
      30/07/2021

      We had a security problem in the company and we could not find a professional who would give us guarantees of results. We found this company by browsing the internet, and the service has been agile, decisive, and very comfortable. They care about us, there is no better I can say about them

      thumb nieves torres mon
      27/10/2020

      Un equip molt seriós i professional. Ens han ajudat a sortir d'un bloqueig en poc temps i amb bons resultats. Molt satisfets amb la seva feina.

      thumb Xavier Natal
      01/10/2020
    • Profesionales y muy rápidos. Hice el pedido y en nada ya estaban haciendo los cambios que solicite. Me hicieron arreglos fuera de encargo, cosa que no es muy común, la verdad es que se agradece mucho que piensen en el cliente. Gracias Marc por tu trabajo, volveremos a hablar. Un saludo

      thumb Susana Santos
      20/05/2021

      Soy programador web y cuando me he visto en la posición de no poder realizar los trabajos debidos a su complejidad técnica o por falta de tiempo, he acudido a ellos. Los trabajos que me han entrado siempre han sido profesionales, de calidad y limpios. Sus precios valen la calidad que retornan. Si vuelvo a necesitarlo volveré a contactar ya que siempre he quedado más que satisfecho.

      thumb Nacho García
      10/09/2020

      Todo más que perfecto. Buena comunicación y rápidos en resolverte el problema que tengas.

      thumb David Tous
      08/09/2020
    • Great service! They got the job done in record time and at a ridiculous price. Always attentive to emails, answering all our questions; they even solved problems that involved contact with other suppliers or were external to the task contracted. Hopefully more like them. 11 out of 10.

      thumb Rosas Verdes
      19/04/2021

      Solventaron con eficiencia algunos problemas de programación y ralentización general que tenía en mi web, aportando utilitarios para mejorar el rendimiento.

      thumb Joan Gelabert
      25/10/2021

      The company made a very good work for me. Very professional team, rapidly done, and we had a good feedback during the duties. The team has a high expertise with php. I do recommend them.

      thumb Vicente Celada Gonzalez
      19/06/2021
    • Beto did a great job with optimizing our WordPress website! It was very slow in the beginning, but thanks to his efforts now runs really fast and smoothly. Outstanding professional, great communication & superb results! We’ll definitely hire him again for future projects. Thanks Beto!

      thumb Verena Nyc
      19/11/2019

      Ens han solucionat uns problemes de la web de forma molt professional. La comunicació és molt fluida i agradable. Ens sentim molt tranquils i segurs de tenir PhpNinja donant suport a la nostra web. 100% recomenat!!

      thumb Merceria TricoTela
      18/11/2020

      Muy buen servicio, disponibles y muy operativos, con un trato cercano y super amable. Gracias.

      thumb Bio Herbarium
      03/11/2021
    • Me hicieron unas mejoras en Prestashop muy eficientemente, manteniendo contacto en todo momento y con gran profesionalidad y rapidez. Volveremos a trabajar con ellos.

      thumb Javier Benedit Salas
      11/11/2021

      Unos grandísimos profesionales, he tenido varios problemas en nuestra web de empresa y lo han resuelto rápido, bien y ycon una excelente comunicación. Si vuelvo a tener problemas volveré. Un saludo cordial, Sergio

      thumb Joyería SergeLL
      31/08/2020

      They made me some improvements in Prestashop very efficiently, maintaining contact at all times and with great professionalism and speed. We will work with them again.

      thumb Javier Benedit Salas
      11/11/2021
    • It has been a very good experience. A fast, clear and very professional service. In addition, an exceptional human treatment. Thank you very much!

      thumb Elena Cantero Pascual
      07/02/2022

      Fantástico, no puedo estar más satisfecho. Desde el momento uno, fueron muy atentos y resolvieron mi problema en el Hosting con gran profesionalidad. Muy recomendable. ¡Gracias chicos!

      thumb Carlos Rodríguez
      09/10/2020

      Very effective and professional. The very good service and the most that I liked is the attention after the solution, very aware that everything has gone well. Highly recommended!

      thumb Miguel Angel Pérez Hernández
      15/04/2021

    Cómo usar índices para mejorar el rendimiento de las consultas MySQL

    Te respondemos rápidamente. Sin compromiso

      Recibir asistencia
    Laura
    Disponible

    Php Ninja

    Php Ninja

    icono whatsapp programador web