Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich um Hilfe beim Optimieren und Beheben von Abfragen in MySQL bitten?

Verwenden Sie SHOW CREATE TABLE

Das sagt mir mehr über Ihre Tabellen, als Ihre Worte es jemals könnten:

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)

ACHTUNG :Wenn Sie 70 Spalten in Ihrer Tabelle haben, lassen Sie die unnötigen weg . Was ist notwendig?

  • Verbundene Felder
  • Felder AUSGEWÄHLT
  • Felder, auf denen geklickt wurde

Verwenden Sie EXPLAIN

Dadurch kann ich sehen, wie Sie Ihre derzeit funktionierende, aber vermutlich langsame Abfrage am besten optimieren können:

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)

Verwenden Sie \G

Nach rechts scrollen ist allgemein eine Unannehmlichkeit.

Üblich:

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)

Besser:

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)

ACHTUNG: \G verwandelt offensichtlich eine Datenzeile in mehrere. Dies wird für mehrere Datenzeilen gleichermaßen umständlich. Tun Sie, was am besten aussieht.

Verwenden Sie ein externes Pastebin für unausstehlich große Datenmengen:

Teilen Sie uns Ihre Erwartungen mit

  • Langsam? - Wir wissen nicht, was langsam für Sie ist. Sekunden, Minuten, Stunden? Es hilft zu wissen.
  • Schneller - Das wissen wir auch nicht. Was erwartest du von schnell?
  • Häufigkeit - Ist dies eine Abfrage, die Sie nur einmal ausführen möchten? Täglich? Hunderte oder tausende Male am Tag? Dies hilft uns zu wissen, wann es gut genug ist .