sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo pido ayuda para optimizar y corregir consultas en MySQL?

Usar MOSTRAR CREAR TABLA

Esto me dice más acerca de sus tablas de lo que sus palabras jamás podrían:

mysql> show create table magic\G
*************************** 1. row ***************************
       Table: magic
Create Table: CREATE TABLE `magic` (
  `id` int(11) DEFAULT NULL,
  `what` varchar(255) DEFAULT NULL,
  `the` datetime DEFAULT NULL,
  `heck` text,
  `soup_is_good` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

ADVERTENCIA :Si tiene 70 columnas en su tabla, omita las innecesarias . ¿Qué es necesario?

  • Campos UNIDOS el
  • Campos SELECCIONADOS
  • Campos DONDE activar

Usar EXPLICAR

Esto me permite ver la mejor manera de optimizar su consulta actualmente en funcionamiento, aunque presumiblemente lenta:

mysql> explain select *     from magic\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: magic
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 1
        Extra: 
1 row in set (0.00 sec)

Usar \G

Tener que desplazarse hacia la derecha es generalmente un inconveniente.

Usual:

mysql> select * from magic;
+------------+-------------------------------+---------------------+-------------------+--------------+
| id         | what                          | the                 | heck              | soup_is_good |
+------------+-------------------------------+---------------------+-------------------+--------------+
| 1000000000 | A really long text string yay | 2009-07-29 22:28:17 | OOOH A TEXT FIELD |        100.5 | 
+------------+-------------------------------+---------------------+-------------------+--------------+
1 row in set (0.00 sec)

Mejor:

mysql> select * from magic\G
*************************** 1. row ***************************
          id: 1000000000
        what: A really long text string yay
         the: 2009-07-29 22:28:17
        heck: OOOH A TEXT FIELD
soup_is_good: 100.5
1 row in set (0.00 sec)

ADVERTENCIA: \G obviamente convierte una fila de datos en varias. Esto se vuelve igualmente engorroso para varias filas de datos. Haz lo que se vea mejor.

Usa un pastebin externo para fragmentos de datos desagradablemente grandes:

Háganos saber sus expectativas

  • ¿Lento? - No sabemos lo que es lento para ti. ¿Segundos, minutos, horas? Es útil saberlo.
  • Más rápido - Nosotros tampoco sabemos esto. ¿Cuál es su expectativa de ayuno?
  • Frecuencia - ¿Es esta una consulta que planea ejecutar solo una vez? ¿Diario? ¿Cientos o miles de veces al día? Esto nos ayuda a saber cuándo es suficientemente bueno .