Тёмный

Базы данных. MySQL. Индексы 

R class Tech
Подписаться 12 тыс.
Просмотров 65 тыс.
50% 1

Презентация:
docs.google.com/presentation/...
Практика:
docs.google.com/spreadsheets/...
Тестовая база:
drive.google.com/file/d/1ccga...
В этом занятии:
- Проблематика
- B-tree
- Индекс по одному атрибуту WHERE
- Индекс по нескольким атрибутам WHERE
- Индекс WHERE + ORDER BY
- Селективность индекса
- Explain
- Показать использование только части индекса
- Ограничения
- Производительность
По любым вопросам, связанным с курсом можно писать на почту: okulov@rclass.pro
Личный канал Антона: / @about-code

Опубликовано:

 

10 июн 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 184   
@ev8317
@ev8317 3 года назад
Это настолько офигенное видео, что я даже оставлю комент! Спасибо Вам, мужики!
@Rclass
@Rclass 3 года назад
Спасибо ^_^ мы старались )
@ufear2569
@ufear2569 3 года назад
@@Rclass ахах, под таким даже захотелось оставить ответ, действительно, спасибо)) очень хорошее видео!
@Rclass
@Rclass 3 года назад
@@ufear2569 и вам спасибо за отклик :)
@ShomaAbd1991
@ShomaAbd1991 3 года назад
Поддерживаю! Лайк или ilike '%'
@Rclass
@Rclass 3 года назад
@@ShomaAbd1991 Спасибо! Мы старались :)
@user-_kirill
@user-_kirill 3 года назад
Чувак, ты классный учитель. Умеешь заинтересовать) До этого видео я думал "пф, ускорение какое-то, явно ерунда" , а тут ты последовательно показал как это может работать, и на сколько колоссальное ускорение. СПАСИБО )
@Rclass
@Rclass 3 года назад
Спасибо, мы старались ^_^
@marinabo6779
@marinabo6779 2 года назад
Дружище, спасибо за твой труд! Очень классное видео
@Rclass
@Rclass 2 года назад
Спасибо что смотрите, мы старались :)
@user_noname_78dgdh
@user_noname_78dgdh 3 года назад
Огроменное спасибо за урок. Чётко, лаконично, по существу без лишней воды.
@Rclass
@Rclass 3 года назад
Спасибо, мы старались ^_^
@user-ve7dz4mt6s
@user-ve7dz4mt6s 3 года назад
Супер, спасибо за видео!
@ineednew9437
@ineednew9437 3 года назад
Максимально качественное видео, спасибо :)
@Rclass
@Rclass 3 года назад
Спасибо, стараемся ^_^
@oksana-yehorova
@oksana-yehorova 2 года назад
это самое лучшее видео про индексы, которое я видела. доходчивое объяснение
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@user-tt5rs1us5g
@user-tt5rs1us5g 2 года назад
По край ней мере лучше чем в вузе!) Другие видео про индексы еще не смотрел
@oksanayehorova
@oksanayehorova 2 года назад
@@user-tt5rs1us5g в вузе о них не было ни слова. По крайней мере в моем
@sergei_vilgodskii
@sergei_vilgodskii 3 года назад
Очень просто и понятно объяснил, большое спасибо!
@Rclass
@Rclass 3 года назад
Спасибо, мы старались :)
@yurilukashenko3175
@yurilukashenko3175 Год назад
Реально лучшее объяснение по индексам, спасибо)
@Rclass
@Rclass Год назад
Стараемся для вас :)
@dmitrii4383
@dmitrii4383 2 года назад
Очень подробно про крайне важную тему! Спасибо
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@coconut_punker
@coconut_punker 3 года назад
Спасибо за видео и практику!
@Rclass
@Rclass 3 года назад
Вам спасибо за отклик :) Стараемся ^_^
@whoknows921
@whoknows921 2 года назад
Понятно и приятно! Спасибо 🙏
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@donfedor007
@donfedor007 Год назад
Урок огонь! Спасибо Вам!
@Rclass
@Rclass Год назад
Для вас стараемся :)
@guilbertde1516
@guilbertde1516 17 дней назад
Отличный ролик, много полезной инфы доступным языком! Спасибо!
@Rclass
@Rclass 16 дней назад
Для вас стараемся ;)
@askaraskar3665
@askaraskar3665 2 года назад
Лайк,подписка! Начинаю смотреть и изучать остальные видосы
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@mitya7583
@mitya7583 3 года назад
Супер))) Создал БД, начал смотреть ваше видео и ставить индексы. В конце видео оказалось, что они не нужны, на малом кол-во записей и убрал их :-) Было очень интересно. Узнал много нового))) спасибо за ваши старания)
@Rclass
@Rclass 3 года назад
Рады, что помогли ;)
@pozytron-code
@pozytron-code 3 года назад
аналогично)))
@alexeyyakovlev7022
@alexeyyakovlev7022 2 года назад
Все зависит от того что называть под "малым" , как правило индексы если правильно сделаны ускоряют все с размеров в 100 записей и больше . Все советы не делайте на малых базах глупы , просто померяйте , конечно может какие нибудь 50 мс для вас значения не имеют . но для частого использования и больших систем - очень . совет основывается на том что на поддержание индекса тратятся ресурсы , но они тратятся в момент записи а не чтения . а пользователю надо чтение .
@shazplay8878
@shazplay8878 3 года назад
Спасибочки!!! Годное видео ❤️
@Rclass
@Rclass 3 года назад
Спасибо, мы старались :)
@maxx27i
@maxx27i 2 года назад
Спасибо! Прекрасное объяснение! 👍
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@maks-T1000
@maks-T1000 3 года назад
Отдельное спасибо за базу))
@Rclass
@Rclass 3 года назад
Вам спасибо) Мы старались ^_^
@Der_Meister126
@Der_Meister126 2 года назад
Как к ней подключиться ?
@meteysh
@meteysh 3 года назад
Ну очень круто все объяснил и рассказал!
@Rclass
@Rclass 3 года назад
Спасибо большое, стараемся. ^_^
@user-jy4kq8or8z
@user-jy4kq8or8z Год назад
Спасибо за отличное объяснение!
@Rclass
@Rclass Год назад
Всегда пожалуйста :)
@alko_borz
@alko_borz Год назад
Спасибо за видео, очень доступно и понятно
@Rclass
@Rclass Год назад
Благодарим за сей приятный отзыв!
@invisibleinvisible83
@invisibleinvisible83 2 года назад
Спасибо очень крутое видео, все просто и понятно 🙏🏻🌹 Процветания каналу
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@karinalazareva6123
@karinalazareva6123 Год назад
Огромное спасибо! Однозначно ЛАЙК.
@Rclass
@Rclass Год назад
Спасибо, мы старались!
@kirillverenkov5942
@kirillverenkov5942 2 года назад
Спасибо, очень крутое объяснение! Пойду смотреть другие видео
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@user-jx5fu2bn7u
@user-jx5fu2bn7u Год назад
Просто красавчик, спасибо! С меня подписка и лайк)
@Rclass
@Rclass Год назад
Ай спасибо!
@leventinaglans5425
@leventinaglans5425 3 года назад
Звук в этом видео ГОРАЗДО лучше, чем в предыдущих! Качество и чистота
@Rclass
@Rclass 3 года назад
Спасибо, в этом видео звук снимали непосредственно с рекордера, в предыдущих был петличный микрофон. К сожалению, такого звука можно добиться только на скринкастах, а наш уважаемый спикер больше любит вещать вживую у телевизора :(
@Dastan1910
@Dastan1910 2 года назад
Очень крутое видео, спасибо!
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@user-gf5jd2zs7m
@user-gf5jd2zs7m 3 года назад
Спасибо, все очень понятно
@Rclass
@Rclass 3 года назад
Спасибо за отклик, мы старались ^_^
@user-fq4pc7fm2z
@user-fq4pc7fm2z 2 года назад
Спасибо! очень полезный урок!
@Rclass
@Rclass 2 года назад
Спасибо, мы рады что вам понравилось!
@YuriyKozin
@YuriyKozin 3 года назад
Как-то запускал explain и смотрел на него, как баран на новые ворота. Теперь все ясно. Спасибо!
@Rclass
@Rclass 3 года назад
О сколько нам открытий чудных готовит этот SQL...
@dayverul
@dayverul 6 месяцев назад
Смотрел другое видео от Антона, заочно лайк! "Отдай свежатину!"
@Rclass
@Rclass 6 месяцев назад
Спасибо! :)
@ZhEcA03
@ZhEcA03 2 года назад
Спасибо за видео
@Rclass
@Rclass 2 года назад
Спасибо,мы старались :)
@fibonacci9961
@fibonacci9961 2 года назад
Хорошо было бы ссылки из презентации в описании оставить👌
@dedpihto680
@dedpihto680 Год назад
наконец то нечто интересное и достаточно трудно находимое в интернете. (найти то конечно можно в документации но при этом придется перелопатить кучу лишнего)
@Rclass
@Rclass Год назад
Спасибо, мы старались :)
@user-fj7on8le9g
@user-fj7on8le9g 2 года назад
Да ладно наконец то я нашел нормальное объяснение индексов , спасибо!
@Rclass
@Rclass 2 года назад
Спасибо, мы старались)
@user-bu3hz5be5w
@user-bu3hz5be5w Год назад
Очень полезно, спасибо!
@Rclass
@Rclass Год назад
Спасибо, мы старались :)
@user-pg8ry1tm3t
@user-pg8ry1tm3t 2 года назад
Ну, учитывая что сортировка займёт не менее nlg(n), если она идёт сравнением,то это как бы не lg(n)… есть ещё кстати прошитые b-tree… чуть побыстрей работают
@fresh_wind87
@fresh_wind87 Год назад
Вы гений!
@Rclass
@Rclass Год назад
Спасибо большое, мы старались :)
@Adaetro
@Adaetro 2 года назад
Действительно стало понятно
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@mikhailzhevaga4310
@mikhailzhevaga4310 2 года назад
Спасибо за видео! Надо было посмотреть его до прохождения собеседования, не выглядел бы тупым в вопросах индексирования. :) Хотя собеседование все же прошел) Like + Subscribe !!!
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@ivanssmirnoff
@ivanssmirnoff Год назад
Полезно. Спасибо!
@Rclass
@Rclass Год назад
Спасибо что смотрите :)
@romandeveloper5653
@romandeveloper5653 Год назад
Мужик, красава!
@Rclass
@Rclass Год назад
Ай спасибо :)
@m-danya-327
@m-danya-327 2 года назад
Спасибо! Привет всем СПшникам)
@Rclass
@Rclass 2 года назад
Спасибо что смотрите :)
@Zero-oh8ib
@Zero-oh8ib 2 года назад
из 2021 привет, видео топ
@Rclass
@Rclass 2 года назад
Спасибо! Мы старались)
@invisibleinvisible83
@invisibleinvisible83 2 года назад
У нас тоже не восьмерка)) ничего живем. Да explain analyse очень крутая штука и да, в любой СУБД надо следить на индексами, особенно в Postgres
@Rclass
@Rclass 2 года назад
Под каждым словом подписались )
@Drdeathpanda91
@Drdeathpanda91 3 года назад
Выполняю задания. Написал запрос из предпоследнего задания: select * from workers where role ='инженер' and birthday between '1979-12-01' and '1980-02-01' order by first_name, last_name; Проверка показала, роли имеют в среднем по 10к записей на роль, даты - по 100. Из чего получается логично сделать индекс birthday, role. Однако на деле индекс birthday, role дает результат (cost=6349.76 rows=14110) (actual time=6.038..6.097 rows=71 loops=1) , в то время как role, birthday (cost=32.21 rows=71) (actual time=0.749..0.805 rows=71 loops=1). Правильно понимаю, что это связано с between, а точнее с тем, что он собирает большое кол-во дат, а после по ним производит поиск и находит еще тучу ролей, в время как при role, birthday роли сокращают список возможных дат и идет проверка уже среди набора дат?
@alexeyyakovlev7022
@alexeyyakovlev7022 2 года назад
Первое , использовать строки это означает снизить скорость в разы . пропорционально размеру ключа . потому лучше иметь отдельную таблицу под роли , а в основной таблице использовать только int значение ,. теперь второй вопрос - почему так с индексом случилось - тебе дяди что видео сделали врядли ответят , потому что в postgres поле по которому выбирается range , т.е. between или A > 100 and A < 300 , должно идти последним в индексе . только в этом случае будет задействован индекс как index scan , в противном случае это или seq scan или bitmap scan . но этого дяди не знают , это не ихнее .
@websoda
@websoda 3 года назад
Ждём стрим
@alexanderkuznetsov2817
@alexanderkuznetsov2817 Год назад
Спасибо за видео! А если добавить новый индекс - будут ли старые записи в таблице (которые уже там были до добавления нового индекса) проиндексированы по новому индексу? (извиняюсь за тавтологию)
@Rclass
@Rclass Год назад
Да, конечно. Запрос не завершится, пока не будут проиндексированы все записи. Иногда это весьма не быстрый процесс)
@Der_Meister126
@Der_Meister126 2 года назад
Без воды ! Можно вынести ссылки на доп. источники в описание видео ? Также было бы удобнее расставлять time-коды по ролику
@Rclass
@Rclass 2 года назад
Спасибо! Да, будем работать над этим.
@olegol7336
@olegol7336 7 месяцев назад
Как понять как часто используется тот или иной индекс ?
@RS-ue4wg
@RS-ue4wg 7 месяцев назад
Так это ж! структура данных - дерево поиска. не зря сдавал СИАОД (Структуры и алгоритмы обработки данных)
@Rclass
@Rclass 7 месяцев назад
Именно так! :)
@Bguiysigziggzog
@Bguiysigziggzog 2 года назад
Лойс
@Rclass
@Rclass 2 года назад
Спасибо, мы старались :)
@43Dipall23
@43Dipall23 Год назад
5:40 - Катастрофически сильное ускорение. Так хорошо что аж плохо
@Rclass
@Rclass Год назад
Не очень понятно что имеется ввиду(
@43Dipall23
@43Dipall23 Год назад
@@Rclass Мне просто фраза понравилась, вроде говорится об ускорении, что хорошо, но при этом применяется эпитет "катастрофически" который вроде бы имеет отрицательный оттенок
@Rclass
@Rclass Год назад
@@43Dipall23 а) ну, есть такое, да :)
@vladzaiko5012
@vladzaiko5012 3 года назад
Если у нас составной индекс (price+category) важен ли порядок колонок в запросе в секции where ?
@deadmaster1659
@deadmaster1659 2 года назад
mysql сам может переставлять порядок запросов в where
@user-nb5xw5tr5g
@user-nb5xw5tr5g 2 года назад
Жаль, что про составные очень мало информации в видео. Там много особенностей. Еще, если указать после EXPLAIN, format=json будет гораздо больше информации об индексах
@Rclass
@Rclass 2 года назад
Спасибо за комментарий :) Курс скорее вводный, поэтому много чего нет )
@seoonlyRU
@seoonlyRU 2 года назад
да, просто офигенно)) лайк от СЕООНЛИ - топового вебмастера и проггера
@Rclass
@Rclass 2 года назад
спасибо, мы старались :)
@standarttechnology4477
@standarttechnology4477 Год назад
Спасибо, но один момент не понятен. По b-tree индексу. Это алгоритм индексов по умолчанию в бд или мы вручную как то устанавливаем использовать индекс в рамках данного алгоритма (берём середину, разделяем, сравниваем и тп..). Мне как новичку не совсем понятно. Откуда берётся этот алгоритм.
@floydzxc
@floydzxc 4 месяца назад
Спасибо круто объяснил, а есть ссылка на базу которая использовалась в уроке? потому что ссылка в описании на другую базу
@Rclass
@Rclass 4 месяца назад
Пожалуйста, увы, уже нет(
@user-tt5rs1us5g
@user-tt5rs1us5g 2 года назад
12:00 Категория и цена
@Rivrabobra
@Rivrabobra 3 года назад
Я правильно понимаю, что у СУБД есть доступ к БД, при обращении пользователя к БД через СУБД СУБД обновляет индексы, если это необходимо? Это так +- устроено?
@Rclass
@Rclass 3 года назад
Достаточно сложно представить себе ситуацию когда вы будете обращаться к БД минуя СУБД. +- при определенном приближении да, вы правы.
@pyrkinvanya1
@pyrkinvanya1 Год назад
А можно как то посмотреть что находится в B-tree? Запросом может каким то?
@theAntoshka
@theAntoshka 2 года назад
У менее уникальных колонок, выше селективность (использовать первыми) 16:02
@ardixq
@ardixq 2 года назад
в конце ссылки есть, что нужно почитать, а в описании их нет. где их можно найти?
@Rclass
@Rclass 2 года назад
Презентация приложена к каждому видео, там ссылки кликабельные :)
@ardixq
@ardixq 2 года назад
@@Rclass а, ого, вотета технологи на пыхе
@user_noname_78dgdh
@user_noname_78dgdh 3 года назад
Хотелось бы поподробнее узнать в каких случаях индекс вредит и какие расчёты при этом делаются. Просто информации о том что при вставке и ибновлении не совсем достаточно.
@Rclass
@Rclass 3 года назад
Добрый день! Затраты сводятся к пересчету индексов, не более. Вот только если их много или они объемные, это может занять время и ресурсы. А если взять кейс в котором вставка в таблицы с ненужными индексами будет регулярной и объемной, то можно получить уже ощутимую просадку производительности.
@Rclass
@Rclass 3 года назад
Некорректный индекс даже при выборках может чуть-чуть вредить, иногда full scan будет быстрее.
@user_noname_78dgdh
@user_noname_78dgdh 3 года назад
@@Rclassк примеру у меня есть таблица в которую постоянно летят записи и из этой таблицы у меня так же идут постоянно выборки. Записей до несколько сотен тысяч в день. Если я создаю индексы в этой таблице, то они нагружают сервер при перестроении индекса, если индексы не вставлять, то получается полный скан таблицы в которой миллионы записей. Как поступать в этом случае?
@Rclass
@Rclass 3 года назад
@@user_noname_78dgdh если польза от индексов очевидна в вашем случае - то пользоваться, как же иначе :)
@not_psychology
@not_psychology 3 года назад
класс! воды нет
@Rclass
@Rclass 3 года назад
Спасибо, мы старались! :)
@Der_Meister126
@Der_Meister126 2 года назад
Вынесите пожалуйста ссылки на доп. источники
@ilyaponomarev9279
@ilyaponomarev9279 Год назад
Я не понял как получилось всего 14 проверок. То есть да, за 14 проверок мы нашли компанию ZEUS, но ведь к этой компании может быть привязано несколько тысяч товаров, то есть количество проверок в итоге точно больше 14, или я что-то неправильно понял?
@_bigbro
@_bigbro 3 года назад
а кто-нибудь может посоветовать хорошую тестовую базу с большим количество данных и "плохими" кейсами как дублирующиеся ключи и проч? например чтобы были 10 табличек на 10млн строк?
@Rclass
@Rclass 3 года назад
Возможно, проще сгенерировать таковую. Займет это не так много времени, зато будет полностью отвечать вашим требованиям.
@web_kub
@web_kub 3 года назад
11:48 думаю что (цена, категория)
@web_kub
@web_kub 3 года назад
ееес!
@ivansinelnyk825
@ivansinelnyk825 2 года назад
на 8:29 сказано, что log2(1)=1. Это не верно - log2(1)=0
@Rclass
@Rclass 2 года назад
Ага, обсчитались видимо. Спасибо :)
@mr.cannabis471
@mr.cannabis471 3 года назад
еще 10 таких и мидл
@scum9180
@scum9180 Год назад
Как бинарный поиск работает с буквами?
@Rclass
@Rclass Год назад
Немного не поняли в чем сложность? Слова = массив чисел (грубо). А с числами проблем нет - бери и сравнивай/сортируй.
@itshtuchki
@itshtuchki Год назад
Оставьте ссылки из "Прочитать и изучить" в комментариях или в описании видео. Не возможно такое набрать или скопировать.
@Rclass
@Rclass Год назад
Изначально задумано что вы так или иначе будете работать с презентацией, благо оттуда можно быстро копировать код. Поэтому ссылки изначально там и лежат)
@itshtuchki
@itshtuchki Год назад
@@Rclass да, Я так и сделал потом, но вот первая ссылка уже не работает.
@user-kc9ne2zw8p
@user-kc9ne2zw8p 3 года назад
Спасибо, это вот полезно было. А про партицирование, шардирование, реплецирование я так понял нету? Хотя партицирование и шардирование редкий кейс, но тем не менее было бы думаю интересно знать что и так можно если прям много записей. К тому же это можно совмещать.
@Rclass
@Rclass 3 года назад
Курс скорее ознакомительный, поэтому таких кейсов нет, к сожалению.
@ProRezak
@ProRezak 3 года назад
Попробовал сделать как рассказано тут, скорость обработки запроса снизилась с 6с до 70мс! Как такое возможно в реальной то жизни?!
@socvopros
@socvopros 3 года назад
Скорость увеличилась
@andreykultyshev480
@andreykultyshev480 3 года назад
если база из 100 строк, то накладные расходы субд на индексы будут выше, чем перебор 100 строк)
@user-pg8ry1tm3t
@user-pg8ry1tm3t 2 года назад
Интересно, что есть скорости доступа менее 1 мс…
@TeuFortMan
@TeuFortMan 2 года назад
Разница между 0,8 мс и 0,9 смахивает на погрешность.
@Rclass
@Rclass 2 года назад
Хорошее замечание, это усреднённые значения после 20 прогонов. Тенденция прослеживается на самом деле :)
@s_bandera
@s_bandera 3 года назад
Смотреть на скорости 1.5
@Rclass
@Rclass 3 года назад
Издержки онлайн-лекции, к сожалению :(
@user-wk5fm5qw1f
@user-wk5fm5qw1f 2 года назад
исключительно на х2 смотрю 99% обучающих видео
@renakdup
@renakdup 3 года назад
в UTF-8 максимальное количество байт = 4, а у вас сказано 3
@Rclass
@Rclass 3 года назад
Спасибо за отклик, обязательно разберемся.
@free_dm4632
@free_dm4632 3 года назад
в MySQL utf8 3 байтовый, урезанный, utf8mb4 - 4 байтовый, полный. Так что все верно.
@coconut_punker
@coconut_punker 3 года назад
Вроде это называетсо бинарный поезг а не B-tree индегз, или я штотапутаю?
@Rclass
@Rclass 3 года назад
Принцип B-tree индегза основан на бинарном поезге, всёнорм
@alexeyyakovlev7022
@alexeyyakovlev7022 2 года назад
Базы - это не ваше ... это крайне примитивный взгляд .
@Rclass
@Rclass 2 года назад
Спасибо за ваше мнение, мы обязательно его учтём, без сомнения!
@alexeyyakovlev7022
@alexeyyakovlev7022 2 года назад
@@Rclass вы заводите в заблуждение подписчиков . с точки зрения человека который работает с терабайтными базами - 50% вашего видео полная дичь .
@jellyfish6265
@jellyfish6265 5 месяцев назад
видео ни о чем, как и все у данного автора
@Rclass
@Rclass 5 месяцев назад
Ух ты, Хейтеры! 😄
@getright20
@getright20 Год назад
с вендором эти пример кластерного или не кластерного индекса?
@PomogB
@PomogB Год назад
"Указания покрытия, про это отдельно почитайте" 😅😅😅, где блин?
Далее
Базы данных. MySQL. Транзакции
41:32
Day 3 | Real-world Applications
1:52:59
Просмотров 938