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

Разбиране на множество индекси на колони в MySQL заявка

Добър въпрос.

Индексите работят отляво надясно, така че вашият WHERE критерии ще използват индекса. Сортирането също ще използва индекса в този случай (план за изпълнение по-долу).

От ръководството :

Ако сте имали индекс с една колона (accountid ), вместо това ще се използва файлово сортиране. Следователно вашата заявка има полза от този индекс.

Индекс с две колони

create table t1 (
  accountid tinyint,
  logindate date);

create index idx on t1 (accountid, logindate);

insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'), 
    (1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'), 
    (1, '2012-09-01'), (3, '2012-10-19'), (1, '2012-03-01')

План за изпълнение

ID  SELECT_TYPE  TABLE  TYPE  POSSIBLE_KEYS  KEY  KEY_LEN  REF   ROWS  FILTERED  EXTRA
1   SIMPLE       t1     ref   idx            idx  2        const 5     100       Using where; Using index

Индекс на една колона

create table t1 (
  accountid tinyint,
  logindate date);

create index idx on t1 (accountid);

insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'), 
    (1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'), (1, '2012-09-01'), 
    (3, '2012-10-19'), (1, '2012-03-01')

План за изпълнение

ID  SELECT_TYPE  TABLE  TYPE   POSSIBLE_KEYS  KEY  KEY_LEN  REF   ROWS  FILTERED  EXTRA
1   SIMPLE       t1     range  idx            idx  2              5     100       Using where; Using filesort



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкна множество масиви в база данни?

  2. ИЗБЕРЕТЕ потребители от базата данни MySQL чрез битова маска за привилегии?

  3. Защо django ORM е толкова по-бавен от суровия SQL

  4. Изтриване на всички дублиращи се редове с изключение на един в MySQL?

  5. Разрешения за MySQL Съхранена процедура