Почему MySQL использует только составной индекс, а не отдельные индексы?

Теперь пакет purrr делает этот процесс очень простым:

library(purrr)

before %>% transpose()

## $x
## $x$a
##   a x
## 1 1 2
## 
## $x$b
##   b w
## 1 5 6
## 
## 
## $y
## $y$a
##   a y
## 1 3 4
## 
## $y$b
##   b z
## 1 7 8
1
задан Shadow 17 January 2019 в 21:07
поделиться

1 ответ

Когда индекс (составной или нет) используется для «сортировки», MySQL считывает данные по порядку и не выполняет сортировку вообще. Это невозможно с несколькими индексами.

Возможно упорядоченное чтение по 1-му индексу, а затем сортировка файлов, но вряд ли это будет быстрее, поэтому MySQL этого не делает.

Если вам действительно нужно это сделать, вы можете использовать такой подзапрос, как этот:

    SELECT ...
    FROM (
            SELECT primary_key
            FROM table1
            ORDER BY field1
            LIMIT 15
    ) tmp
    JOIN table1 t ON t.primary_key = tmp.primary_key
    ORDER BY field1, field2

Это может быть полезно, когда у вас есть LIMIT и по какой-то причине вы не можете добавить составной индекс .

0
ответ дан Vatev 17 January 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: