27 lines
1.9 KiB
Markdown
27 lines
1.9 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- зрелость/🌱
|
||
date:
|
||
- - 2024-06-16
|
||
zero-link:
|
||
- "[[00 MySQL]]"
|
||
parents:
|
||
- "[[Индексы в MySQL]]"
|
||
linked:
|
||
---
|
||
![Составные индексы в БД](Составные%20индексы%20в%20БД.md)
|
||
|
||
В 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; Индекс будет использован только на первую часть. Для сортировки индекс используется только в одном направлении. |