Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / вопрос по индексам / 13 сообщений из 13, страница 1 из 1
02.04.2018, 18:56
    #39624326
tadeyiloda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
читаю статью https://ruhighload.com/Индексы в mysql
раздел Проверка длинны составных индексов
Значение key_len показывает используемую длину индекса. В нашем случае 24 байта — длинна всего индекса (5 байт age + 19 байт gender).
разве age не 4 байта как целое? и откуда берутся 19 байт для gender
...
Рейтинг: 0 / 0
02.04.2018, 21:53
    #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
03.04.2018, 07:45
    #39624446
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
tadeyilodaоткуда берутся 19 байт для genderНу единственное предположение, почему для поля с двумя значениями 'male' и 'female' использовано 19 байт - это оттого, что "гениальный" автор указанного опуса использовал для этого поля текстовый тип VARCHAR(6) и трёхбайтовую кодировку, что даёт 18 байтов, да плюс один байт на хранение Null-признака.
...
Рейтинг: 0 / 0
03.04.2018, 13:11
    #39624724
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
tadeyilodaчитаю статью https://ruhighload.com/Индексы в mysql
раздел Проверка длинны составных индексов
Значение key_len показывает используемую длину индекса. В нашем случае 24 байта — длинна всего индекса (5 байт age + 19 байт gender).
разве age не 4 байта как целое? и откуда берутся 19 байт для gender

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

автор Не ссыте.
...
Рейтинг: 0 / 0
03.04.2018, 13:52
    #39624791
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
MasterZivДан главный совет:Совет - дерьмо. День, максимум два - а потом лопнешь...
...
Рейтинг: 0 / 0
05.04.2018, 16:44
    #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
06.04.2018, 00:50
    #39626439
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
tadeyilodaпочему часть индекса?Потому что по первому полю индекса происходит поиск по диапазону.
...
Рейтинг: 0 / 0
06.04.2018, 07:28
    #39626478
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
tadeyilodaпочему часть индекса?В поле key_len указывается не длина записи индекса, а размер префикса индекса, который будет использован в операции.
...
Рейтинг: 0 / 0
06.04.2018, 07:49
    #39626484
tadeyiloda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по индексам
miksofttadeyilodaпочему часть индекса?Потому что по первому полю индекса происходит поиск по диапазону.

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

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


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