Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę poprosić o pomoc w optymalizacji i naprawianiu zapytań w MySQL?

Użyj POKAŻ UTWÓRZ TABELĘ

To mówi mi więcej o twoich stołach niż twoje słowa:

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)

OSTRZEŻENIE :jeśli w tabeli masz 70 kolumn, pomiń niepotrzebne . Co jest konieczne?

  • Pola DOŁĄCZONE w dniu
  • Wybrane pola
  • Pola, na których grasz

Użyj WYJAŚNIJ

To pozwala mi zobaczyć, jak najlepiej zoptymalizować aktualnie działające, ale prawdopodobnie wolne zapytanie:

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)

Użyj \G

Konieczność przewijania w prawo to ogólnie niedogodność.

Zwykłe:

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)

Lepiej:

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)

OSTRZEŻENIE: \G oczywiście zamienia jeden wiersz danych w kilka. Staje się to równie kłopotliwe w przypadku kilku wierszy danych. Rób to, co wygląda najlepiej.

Użyj zewnętrznego Pastebina dla nieznośnie dużych porcji danych:

Poinformuj nas o swoich oczekiwaniach

  • Wolno? - Nie wiemy, co jest dla ciebie powolne. Sekundy, minuty, godziny? Warto wiedzieć.
  • Szybciej - Tego też nie wiemy. Czego oczekujesz od szybkości?
  • Częstotliwość - Czy to zapytanie, które planujesz uruchomić tylko raz? Codziennie? Setki lub tysiące razy dziennie? Dzięki temu wiemy, kiedy jest wystarczająco dobrze .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić kategorię i podkategorię?

  2. Nie można połączyć się z serwerem MySQL na „localhost” (10061) po instalacji

  3. mySQL - Wstaw do trzech tabel

  4. Jaki jest najszybszy sposób odpytywania tabeli MySQL w poszukiwaniu nowych wierszy?

  5. Konwertuj to zapytanie na elokwentne