sql >> Databasteknik >  >> RDS >> Mysql

Hur ber jag om hjälp med att optimera och fixa frågor i MySQL?

Använd SHOW CREATE TABLE

Det här säger mig mer om dina tabeller än dina ord någonsin skulle kunna:

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)

VARNING :Om du har 70 kolumner i din tabell, uteslut de onödiga . Vad är nödvändigt?

  • Fält som gick med på
  • Fält har valts
  • Fält WHEREed på

Använd EXPLAIN

Detta låter mig se hur du bäst kan optimera din för närvarande fungerande, men förmodligen långsam fråga:

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)

Använd \G

Att behöva rulla åt höger är vanligtvis en olägenhet.

Vanligt:

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)

Bättre:

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)

VARNING: \G förvandlar uppenbarligen en rad med data till flera. Detta blir lika besvärligt för flera rader med data. Gör det som ser bäst ut.

Använd en extern pastebin för obehagligt stora databitar:

Berätta för oss om dina förväntningar

  • Långsamt? - Vi vet inte vad långsamt är för dig. Sekunder, minuter, timmar? Det hjälper att veta.
  • Snabbare – Det här vet vi inte heller. Vad förväntar du dig av snabba?
  • Frekvens - Är det här en fråga som du tänker köra bara en gång? Dagligen? Hundra eller tusen gånger om dagen? Detta hjälper oss att veta när det är Good Enough .


  1. Mysql-syntaxfel skapade lagrad procedur

  2. Kontrollera om filen finns eller inte i sql-servern?

  3. GroupingError:ERROR:kolumnen måste visas i GROUP BY-satsen eller användas i en aggregerad funktion

  4. Hur man får en lista över alla kontrollbegränsningar i SQL Server Database - SQL Server / TSQL Tutorial Del 85