sql >> Database >  >> RDS >> Mysql

Hoe vraag ik hulp bij het optimaliseren en oplossen van queries in MySQL?

Gebruik SHOW CREATE TABLE

Dit vertelt me ​​meer over je tabellen dan je woorden ooit zouden kunnen:

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)

WAARSCHUWING :Als u 70 kolommen in uw tabel heeft, laat de onnodige weg . Wat is er nodig?

  • Velden zijn lid geworden van
  • Velden GESELECTEERD
  • Velden WHEREed on

Gebruik UITLEG

Hierdoor kan ik zien hoe ik uw momenteel werkende, maar vermoedelijk trage zoekopdracht het beste kan optimaliseren:

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)

Gebruik \G

Naar rechts moeten scrollen is over het algemeen een ongemak.

Gebruikelijk:

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)

Beter:

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)

WAARSCHUWING: \G verandert uiteraard één rij gegevens in meerdere. Dit wordt even omslachtig voor meerdere rijen gegevens. Doe wat er het beste uitziet.

Gebruik een externe pastebin voor onaangenaam grote hoeveelheden gegevens:

Laat ons uw verwachtingen weten

  • Traag? - We weten niet wat traag voor je is. Seconden, minuten, uren? Het helpt om te weten.
  • Sneller - Wij weten dit ook niet. Wat verwacht je van snel?
  • Frequentie - Is dit een query die u slechts één keer wilt uitvoeren? Dagelijks? Honderden of duizenden keren per dag? Dit helpt ons te weten wanneer het goed genoeg is .


  1. Lijst van alle tabellen met een bepaalde kolomnaam

  2. Hoe verander ik het kolomtype in Heroku?

  3. De kracht van SQL en procedurele verklaringen combineren met MariaDB's Oracle-compatibiliteitsmodus

  4. Londiste-replicatie met PostgreSQL 9.0