Невозможно принудительно индексировать индекс MySQL

Filipe Ferminiano спросил: 14 ноября 2017 в 06:00 в: mysql

Я пытаюсь оптимизировать запрос, но объяснение запроса показывает, что mysql не использует какой-либо индекс.

Это мой запрос:

explain
 SELECT t1.*     FROM crypto_screener.prices as t1 FORCE INDEX (PRIMARY)    where t1.id = (
      select t2.id
      from (select *
              from
              crypto_screener.prices FORCE INDEX (allfilters)
              where date > '2017-12-07'
              ) as t2
      where t2.symbol = t1.symbol
      order by t2.id desc
      limit 1
      )
;

Это show index from prices;

Table   Non_unique  Key_name    Seq_in_index    Column_name Collation   Cardinality Sub_part    Packed  Null    Index_type  Comment Index_comment
prices  0   PRIMARY 1   id  A   57718   NULL    NULL        BTREE       
prices  0   priceid 1   id  A   57718   NULL    NULL        BTREE       
prices  1   pricefilters    1   symbol  A   369 NULL    NULL    YES BTREE       
prices  1   pricefilters    2   date    A   57718   NULL    NULL    YES BTREE       
prices  1   datefilters 1   date    A   506 NULL    NULL    YES BTREE       
prices  1   symbolfilters   1   symbol  A   421 NULL    NULL    YES BTREE       
prices  1   allfilters  1   id  A   57718   NULL    NULL        BTREE       
prices  1   allfilters  2   symbol  A   57718   NULL    NULL    YES BTREE       
prices  1   allfilters  3   date    A   57718   NULL    NULL    YES BTREE       

Теперь запрос не выполняется с количеством данных внутри таблицы. Как я могу оптимизировать это?

0 ответов