Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je demander de l'aide pour optimiser et corriger les requêtes dans MySQL ?

Utilisez AFFICHER CRÉER TABLE

Cela m'en dit plus sur vos tableaux que vos mots ne pourraient jamais :

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)

MISE EN GARDE  :Si vous avez 70 colonnes dans votre tableau, omettez celles qui ne sont pas nécessaires . Qu'est-ce qui est nécessaire ?

  • Champs rejoints le
  • Champs SÉLECTIONNÉS
  • Champs WHEREed on

Utilisez EXPLIQUER

Cela me permet de voir comment optimiser au mieux votre requête en cours de fonctionnement, mais probablement lente :

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)

Utilisez \G

Devoir faire défiler vers la droite est généralement un inconvénient.

Habituel :

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)

Mieux :

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)

MISE EN GARDE : \G transforme évidemment une ligne de données en plusieurs. Cela devient également fastidieux pour plusieurs lignes de données. Faites ce qui semble le mieux.

Utilisez un pastebin externe pour les gros morceaux de données odieux :

Faites-nous part de vos attentes

  • Lent ? - Nous ne savons pas ce que c'est que la lenteur pour vous. Secondes, minutes, heures ? Cela aide à savoir.
  • Plus rapide - Nous ne le savons pas non plus. Quelle est votre attente de rapidité ?
  • Fréquence - Est-ce une requête que vous prévoyez d'exécuter une seule fois ? Du quotidien? Des centaines ou des milliers de fois par jour ? Cela nous aide à savoir quand c'est assez bon .