Ниже приведены некоторые факты, связанные с использованием индекса B-TREE mysql, и один пример, чтобы понять эту логику.
a) Если в какой-либо таблице содержится ок.75% тех же данных, тогда индекс не будет использоваться, вместо этого mysql будет выполнять сканирование таблицы.
b) Обычно mysql использует только один индекс на таблицу.
c) Методика упорядочения индекса: Mysql будет использовать индекссогласно их порядку.
Например, есть комбинированный индекс для полей a, b и c idx_a_b_c (a, b, c)
i.выберите a, b, c из mytable, где a = 4
Этот запрос будет использовать индекс, поскольку столбец 'a' находится первым в порядке индекса.
ii.выберите a, b, c из mytable, где a = 4 и b = 5
. В этом запросе будет использоваться комбинированный индекс для a & b, так как эти столбцы продолжаются в порядке индекса.выберите a, b, c из mytable, где a = 4 и b = 5 и c> = "2011-01-01 00:00:00"
В этом запросе будет использоваться комбинированный индекс для a, b & cпоскольку эти столбцы продолжаются в порядке индекса.
iv.выберите a, b, c из mytable, где c> = "2011-01-01 00:00:00"
Этот запрос не будет использовать индекс, так как mysql рассматривает индекс из самого левого угла, а столбец c не являетсяСамый левый столбец в индексе.
v.выберите a, b, c из mytable, где a = 4 и c> = "2011-01-01 00:00:00" и c <"2011-01-02 00:00:00" </p>
ThisВ запросе будет использоваться только индекс для столбца «a», но не для столбца «c», так как непрерывность нарушается здесь с левой стороны.Таким образом, этот запрос будет использовать индекс для столбца, а затем сканировать таблицу на наличие столбца c для соответствующих строк в соответствии с фильтром для столбца a.