Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да помоля за помощ при оптимизиране и коригиране на заявки в MySQL?

Използвайте SHOW CREATE TABLE

Това ми казва повече за вашите таблици, отколкото думите ви някога биха могли:

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)

ПРЕДУПРЕЖДЕНИЕ :Ако имате 70 колони в таблицата си, пропуснете ненужните . Какво е необходимо?

  • Полета, присъединени на
  • Полетата са ИЗБРАНИ
  • Полетата WHERE са включени

Използвайте EXPLAIN

Това ми позволява да видя как най-добре да оптимизирам вашата в момента работеща, но вероятно бавна заявка:

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)

Използвайте \G

Необходимостта да превъртите надясно е по принцип неудобство.

Обикновено:

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)

По-добре:

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)

ПРЕДУПРЕЖДЕНИЕ: \G очевидно превръща един ред данни в няколко. Това става еднакво тромаво за няколко реда данни. Правете това, което изглежда най-добре.

Използвайте външна кутия за поставяне за отвратително големи парчета данни:

Кажете ни вашите очаквания

  • Бавно? - Не знаем какво е бавно за теб. Секунди, минути, часове? Помага да знаете.
  • По-бързо - Ние също не знаем това. Какво очаквате от бързо?
  • Честота - Това заявка ли смятате да изпълните само веднъж? Ежедневно? Стотици или хиляди пъти на ден? Това ни помага да разберем кога е Достатъчно добро .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:ИЗБЕРЕТЕ УНИКАЛНА СТОЙНОСТ

  2. Как мога да избера само първото отделно съвпадение от поле в MySQL?

  3. Web2py – Мигриране от SQLite към MySQL

  4. 4 начина за намиране на дублиращи се редове в MySQL

  5. MySQL декартов продукт между два оператора SELECT