digital-garden/_inbox/Составные индексы в MySQL.md

1.9 KiB
Raw Permalink Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-06-16
00 MySQL
Индексы в MySQL

Составные индексы в БД

В MySQL для составного индекса не допускаются пропуски колонок в запросе. Также индекс будет использован до первого неравенства в запросе.

Если у нас в запросе есть поиск по списку (IN), то индекс будет использоваться для списка и операций равенств, но не будет использоваться для сортировок. Лучше в таком случае использовать UNION.

Например, если у нас есть INDEX(A,B,C), то

  • WHERE A = 10 AND B > 405. Индекс будет использоваться только для первой части
  • WHERE A = 10 AND B = 9 AND C < 50. Индекс будет использоваться полностью.
  • WHRE A = 10 AND B = 7 ORDER BY 7. Индекс будет использоваться полностью.
  • WHERE B = 3; ==индекс использоваться не будет==
  • WHERE A=10 AND B>4 AND C>17; Индекс будет использоваться только для первых двух частей
  • WHERE A=10 ORDER BY C; Индекс будет использоваться только на первую часть
  • WHERE A=10 ORDER BY B, C; Индекс будет использован целиком
  • WHERE A=10 ORDER BY B, C DESC; Индекс будет использован только на первую часть. Для сортировки индекс используется только в одном направлении.