powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопрос по индексам
13 сообщений из 13, страница 1 из 1
вопрос по индексам
    #39624326
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читаю статью https://ruhighload.com/Индексы в mysql
раздел Проверка длинны составных индексов
Значение key_len показывает используемую длину индекса. В нашем случае 24 байта — длинна всего индекса (5 байт age + 19 байт gender).
разве age не 4 байта как целое? и откуда берутся 19 байт для gender
...
Рейтинг: 0 / 0
вопрос по индексам
    #39624364
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слово "длина" пишется через одну "н".


tadeyilodaразве age не 4 байта как целое? https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_key_len Due to the key storage format, the key length is one greater for a column that can be NULL than for a NOT NULL column.
tadeyilodaоткуда берутся 19 байт для genderНе вижу в указанной статье DDL используемой таблицы, так что можно только гадать.

Да и вообще статья несколько поверхностная. Читайте лучше доку .
...
Рейтинг: 0 / 0
вопрос по индексам
    #39624446
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaоткуда берутся 19 байт для genderНу единственное предположение, почему для поля с двумя значениями 'male' и 'female' использовано 19 байт - это оттого, что "гениальный" автор указанного опуса использовал для этого поля текстовый тип VARCHAR(6) и трёхбайтовую кодировку, что даёт 18 байтов, да плюс один байт на хранение Null-признака.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39624724
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaчитаю статью https://ruhighload.com/Индексы в mysql
раздел Проверка длинны составных индексов
Значение key_len показывает используемую длину индекса. В нашем случае 24 байта — длинна всего индекса (5 байт age + 19 байт gender).
разве age не 4 байта как целое? и откуда берутся 19 байт для gender

Хорошая статья, правильная.
Дан главный совет:

автор Не ссыте.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39624791
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДан главный совет:Совет - дерьмо. День, максимум два - а потом лопнешь...
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626224
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли мы выполним изменим точное сравнение на поиск по диапазону, увидим что MySQL использует только часть индекса

mysql> EXPLAIN SELECT * FROM users WHERE age <= 29 AND gender = 'male';
+----+-------------+--------+------+---------------+------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+------------+---------+------+------+-------------+
| 1 | SIMPLE | users | ref | age_gender | age_gender | 5 | | 82 | Using where |
+----+-------------+--------+------+---------------+------------+---------+------+------+-------------+


почему часть индекса?
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626439
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaпочему часть индекса?Потому что по первому полю индекса происходит поиск по диапазону.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626478
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaпочему часть индекса?В поле key_len указывается не длина записи индекса, а размер префикса индекса, который будет использован в операции.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626484
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttadeyilodaпочему часть индекса?Потому что по первому полю индекса происходит поиск по диапазону.

если условие не равно а больше\меньше то индекс не используется?
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626489
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaесли условие не равно а больше\меньше то индекс не используется?Может использоваться, а может и нет...
Посмотри FAQ: Нахождение записей, где заданное значение находится между значениями полей - ведь BETWEEN есть ни что иное как два неравенства.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626507
tadeyiloda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

база сама решает для больше\меньше нужно использовать индекс или нет? если не использует значит так и нужно?
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626516
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadeyilodaбаза сама решает для больше\меньше нужно использовать индекс или нет?
Ну не база, а сервер... построитель плана выполнения решает - на основании текста запроса, статистики таблиц и прочего (если интересно - почитай MySQL internals). Можно попытаться повлиять на это дело, запретив или, наоборот, зафорсив использование определённого индекса - но, как показывает реальный опыт, зачастую сервер оказывается более прав.
...
Рейтинг: 0 / 0
вопрос по индексам
    #39626522
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопрос по индексам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]