Что такое SQL ИНДЕКСЫ за 10 минут: Объяснение с примерами

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ม.ค. 2023
  • События и статьи про анализ и проектирование ИТ-систем - t.me/itsysdes_events
    В этой статье мы узнаем:
    - Что такое индексация в SQL
    - Для чего нужна индексация
    - Как работает индексация
    - Что такое двоичный поиск
    - Что такое план выполнения запроса
    - Когда лучше использовать индексы
    - Когда лучше НЕ использовать индексы
    - Что такое кластеризованный индекс
    - Что такое некластеризованный индекс
    Поддержать канал разово - yoomoney.ru/to/410012243709514
    Поддержать канал подпиской - boosty.to/listenit
    Я.Дзен - zen.yandex.ru/listenit
    Телеграм-канал - t.me/listenit_channel
    По вопросам сотрудничества - t.me/ed_akimov
    Ссылка на статью 1 - / %d1%81%d1%83%d0%bf%d0%...
    Ссылка на статью 2 - webformyself.com/sql-indeksy/...
    Что такое SQL и реляционные базы данных - • Что такое SQL и реляци...
    Синтаксис SQL запросов: Часть 1 - • Синтаксис SQL запросов...
    Что такое NoSQL за 6 минут - • Что такое NoSQL за 6 м...
    Что такое ACID за 9 минут - • Что такое ACID за 9 минут
    Что такое UML за 7 минут - • Что такое UML за 7 мин...
    Что такое Scrum за 8 минут - • Что такое Scrum за 8 м...
    Обзор Agile - • Обзор Agile. Это метод...
    Приоритизация бэклога за 4 минуты - • Приоритизация бэклога ...
    Что такое Kanban - • Что такое Канбан-метод...
    Что такое Канбан-доска - • Канбан-доска - это не ...
    Что такое HTTP и HTTPS за 9 минут - • Что такое HTTP и HTTPS...
    Машинное обучение для чайников - • Машинное обучение для ...
    Что такое Big Data за 6 минут - • Что такое Big Data за ...
    Что такое CRUD за 6 минут - • Что такое CRUD за 6 минут
    Введение в REST API за 7 минут - • Введение в REST API за...
    Различия REST и SOAP за 4 минуты - • Различия REST и SOAP з...
    Что такое middleware за 7 минут - • Что такое middleware з...
    Что такое UML за 7 минут - • Что такое UML за 7 мин...

ความคิดเห็น • 112

  • @user-bx5jw2ws7h
    @user-bx5jw2ws7h ปีที่แล้ว +88

    10/10 за разъяснение этой темы. Все наглядно и понятно. Проходил обучение по SQL на степике : там это максимально непонятно объяснили. Поделюсь ссылкой в обучении

  • @LeonidYakovlev85
    @LeonidYakovlev85 7 หลายเดือนก่อน +2

    Большое спасибо за выпуск. Интересно, содердательно и информативно 👍

  • @user-kw7vn6vd8k
    @user-kw7vn6vd8k ปีที่แล้ว +5

    Спасибо за видео. Для начинающих то что надо!
    С Новым Годом!!! Удачи и развития канала!!!

  • @blindbird1619
    @blindbird1619 2 หลายเดือนก่อน +1

    Очень доходчиво объясняете. Спасибо!

  • @user-qj1sp9ve9c
    @user-qj1sp9ve9c 8 หลายเดือนก่อน +1

    Прекрасная подача материала, ёмко, доступно, понятно; оформление презентаций очень стильное, на манер граф. оболочки под Dos😎 Лайк, подписка, приметил и другие ролики на канале после этого, в частности, оконные функции:).

  • @shutka80
    @shutka80 7 หลายเดือนก่อน +2

    Классный у тебя канал. Очень понятно рассказываешь о неочевидных вещах. И круто, что раскрываешь принцип работы под капотом, очень помогает понять логику работы, а следовательно и смысл всего происходящего. Спасибо!

    • @ListenIT_channel
      @ListenIT_channel  7 หลายเดือนก่อน

      Спасибо тебе, очень приятно! И, конечно, авторам статей спасибо, прежде всего

  • @user-le6ix1ud3f
    @user-le6ix1ud3f 5 หลายเดือนก่อน +1

    Спасибо большое. Было очень интересно ❤

  • @old-empire
    @old-empire ปีที่แล้ว +2

    Офигенно! Спасибо!

  • @nyaetotmogno
    @nyaetotmogno ปีที่แล้ว +1

    Спасибо большое! отличная статья!

  • @SuperWolchara
    @SuperWolchara ปีที่แล้ว +1

    спасибо за разъяснения, сейчас как раз занимаемся оптимизацией индексов из за падения производительности

  • @natielsanti407
    @natielsanti407 ปีที่แล้ว +1

    Спасибо за видео!

  • @user-qj5jr8ps8s
    @user-qj5jr8ps8s 2 หลายเดือนก่อน

    Подача огонь, спасибо!

  • @shmeserworking7596
    @shmeserworking7596 ปีที่แล้ว +7

    Прекрасная подача материала, приятная речь, минималистичное оформление в стиле DOS вообще блеск. Ставлю 5, давай зачётку))

    • @dingo05
      @dingo05 8 หลายเดือนก่อน

      Вы что препод?

  • @dmitrylerner1378
    @dmitrylerner1378 ปีที่แล้ว +3

    В некластерном индексе маленькая ашипка: сначала должен идти shoes, затем sports-) Но в целом это не умаляет вклад автора в доступное и быстрое развитие интересующихся! Спасибо!

  • @user-rt4ye5xg1h
    @user-rt4ye5xg1h ปีที่แล้ว +1

    От души, парни! С новым годом вас))

  • @yandoru
    @yandoru 11 หลายเดือนก่อน +1

    Отлично, спасибо!

  • @cor4win
    @cor4win ปีที่แล้ว +28

    Странно, что тут не упомянуто самое главное - почему же собственно поиск по индексу быстрее, чем поиск по оригинальному полю таблицы. А все потому что индекс имеет структуру, оптимизированную под поиск, например, сбалансированное дерево в случае sql server.
    Но в целом неплохо, и за дизайн заставок к роликам большой лайк :)

    • @agelyuri
      @agelyuri 11 หลายเดือนก่อน +1

      6:50 объяснение производительности индекса

  • @andrewbelikov8772
    @andrewbelikov8772 ปีที่แล้ว +1

    Круто объясняешь! Вначале не понял отличия по индексам, почитал на сайтах, снова глянул и как понял ))) Ну или показалось, что понял )) Пока сам не сделаешь, вроде все понятно

  • @firston5360
    @firston5360 ปีที่แล้ว +1

    Ну это просто 🔥🔥🔥 на пальцах, как ребёнку из детского сада объясняется😅 так и должно быть

  • @Cp3aloona
    @Cp3aloona 7 หลายเดือนก่อน +1

    лучший канал, надеюсь тут все ответы получу, на свои вопросы.

    • @ListenIT_channel
      @ListenIT_channel  7 หลายเดือนก่อน

      Буду работать над тем, чтобы получил) Спасибо!

  • @user-lq5xw7hm4c
    @user-lq5xw7hm4c 11 หลายเดือนก่อน +1

    прикольно. как раз стало интересно что такое SQL.

  • @sonic-fan-play4817
    @sonic-fan-play4817 13 วันที่ผ่านมา

    от души спасибо было полезно интересно

  • @tomozi1
    @tomozi1 ปีที่แล้ว +1

    Отличная статья

  • @leopard184
    @leopard184 ปีที่แล้ว +1

    Хороший канал.

  • @farukhkarimbayev7178
    @farukhkarimbayev7178 ปีที่แล้ว +8

    Лучший канал, на который подписался в 2022)

  • @Dima_Bash
    @Dima_Bash ปีที่แล้ว +1

    Спасибо) Понял как искать нужную инфу в таблицах. До этого просил ребят запрос состряпать)

    • @ListenIT_channel
      @ListenIT_channel  ปีที่แล้ว

      Круто, что пригодилось) Удачи!

    • @lonelypaul69
      @lonelypaul69 8 หลายเดือนก่อน

      @@ListenIT_channel 9:50 "Методом двоичного поиска находит ..." Как по значению 'electronics' может производится двоичный поиск? Вопрос в том, что непонятно, как находятся все указатели исходя из ключа?

  • @Kvit_Domosed
    @Kvit_Domosed ปีที่แล้ว

    Спасибочки

  • @Igor245390
    @Igor245390 ปีที่แล้ว

    Спасибо, подчерпнул для себя нужную информацию. Но остался вопрос. Если при создании таблици создается столбец и у него есть параметр 'UNIQUE'. Создается ли индекс, по аналогиис полем ID? или что происходит?

  • @Tolmachovtv
    @Tolmachovtv 3 หลายเดือนก่อน +1

    Дуже просто, доступно і ефективно пояснив! Дякую, натхнення тобі!

  • @akimovvadim4736
    @akimovvadim4736 8 หลายเดือนก่อน

    А вы можете озвучить тот большой курс по Flask опубликованный на habr-е?

  • @user-hw1gg1mp1f
    @user-hw1gg1mp1f ปีที่แล้ว

    Очень поверхностно, но для введения в тему за 10 минут хорошо.

  • @Chel1k7
    @Chel1k7 9 หลายเดือนก่อน

    я правильно понимаю исходя из концовки видео, что ту же таблицу Product в бд магазина лучше не индексировать ? Ибо в ней часто происходят обновления (цен например) и добавления товаров. Тогда почему в самом начале пример про Амазон где явно так же часто происходят обновления товаров

  • @user-qv2de6vg2f
    @user-qv2de6vg2f ปีที่แล้ว

    Thank you

  • @user-bt4ew5cc6u
    @user-bt4ew5cc6u ปีที่แล้ว +1

    огонь )))

  • @abbc1999
    @abbc1999 13 วันที่ผ่านมา

    Spasibo

  • @Kirill.Bogdanovich
    @Kirill.Bogdanovich 6 หลายเดือนก่อน

    Подскажите подажалуйста как делают такие видео? Как делают такую анимацию и где об этом модно узнать подробнее? Оочень буду благодарен вам за ответ)))

  • @jy4apa165
    @jy4apa165 2 หลายเดือนก่อน

    По поводу правильного использования индексов не до конца понял. Что подразумевалось под обновлением БД? Новые какие-либо записи или обновление таблиц при миграциях?

  • @user-kk9vl4jd5y
    @user-kk9vl4jd5y ปีที่แล้ว

    8:30 правильно понимаю, что в product_category_index две последние записи перепутаны местами?

  • @olzhikggg6915
    @olzhikggg6915 ปีที่แล้ว +1

    молодец

  • @TNamiNa
    @TNamiNa 3 หลายเดือนก่อน

    Очень поверхностно

  • @sorryladies6191
    @sorryladies6191 3 หลายเดือนก่อน

    Поставил Вайк!

  • @user-bk1wk7ey1s
    @user-bk1wk7ey1s 3 หลายเดือนก่อน +1

    Я не понял как по не кластеризованному индексу БД ищет двоичным поиском? Там Id должен быть отсортирован для этого?

  • @Denisko123
    @Denisko123 ปีที่แล้ว +3

    Раньше тыркал индексы везде, но админы начали материться. Таблица весит несколько террабайт и почти на каждом поле индекс )

  • @AlexanderZolnikov
    @AlexanderZolnikov ปีที่แล้ว +2

    Видео, по определениям в нем, относится к мс скл, ван лав, но стоит об этом уточнить. Другие БД могут работать по другому..

  • @arthuryadgarov2375
    @arthuryadgarov2375 ปีที่แล้ว

    Двоичный поиск очень похож на метод Ньютона для поиска решений уравнений. Это он?

  • @qlmanlp
    @qlmanlp หลายเดือนก่อน

    5:44 Как индексы обновляются не будут, если несколько секунд ранее было сказано, что они обновляются после каждого добавления?

  • @walcermelodia
    @walcermelodia ปีที่แล้ว

    а индексы ускоряют join'ы? когда например ... join ... where id = .... и т.п.

  • @MichailFort
    @MichailFort ปีที่แล้ว

    Nice)

  • @scpfan4302
    @scpfan4302 ปีที่แล้ว +4

    Кластеризованный индекс не использует первичный ключ для структуризации данных! Первичный ключ служит для целостности данных, и то, что он по умолчанию создаёт кластеризованный индекс - стандартное поведение, а не аксиома

  • @racoobina
    @racoobina ปีที่แล้ว

    А есть подкасты на яндекс-музыке с тем же материалом?

    • @ListenIT_channel
      @ListenIT_channel  ปีที่แล้ว +1

      Всё планирую, но пока руки не дошли сделать подкаст

  • @SuperWolchara
    @SuperWolchara ปีที่แล้ว

    а как ведет себя кластеризованный индекс если первичный ключ является составным из двух внешних ключей в таблице и как таковой "физической" колонки первичного ключа нет

  • @uzurbatya
    @uzurbatya 2 หลายเดือนก่อน

    6:40 Зачем использовать бинарный поиск, когда известен первичный ключ?

  • @IlyuhaaaSuper
    @IlyuhaaaSuper ปีที่แล้ว

    В примерах в которых сказано, где лучше не использовать индексы было сказано, что лучше не индексировать столбцы, которые часто обрабатываются. Что понимается под обработкой столбцов?

    • @user-md8gg5ef6c
      @user-md8gg5ef6c 10 หลายเดือนก่อน +1

      скорее всего автор имел ввиду операции UPDATE, т.к. после них обязательно будет реиндекс таблицы, что накладно

    • @uzurbatya
      @uzurbatya 2 หลายเดือนก่อน

      Где там такое сказано? Таймкоды всегда ставь, если хочешь, чтобы тебе ответили

  • @don-kg2hh
    @don-kg2hh ปีที่แล้ว +1

    Вроде поиск по индексам не всегда считается за logn. Все зависит от структуры данных, в которой они и хранятся. Можно выбрать индексацию с помощью хэш-таблицы, где сложность поиска O(1), но есть нюансы, связанные с хранением.

    • @andriipetko8684
      @andriipetko8684 ปีที่แล้ว +2

      Нюанс заключаеться в том в том что не будут работать с индексом операции , только равенство в запросе. Так как без понимания в "какую сторону" идти бинарный поиск использовать не получиться.

  • @imuqqieg9274
    @imuqqieg9274 ปีที่แล้ว +1

    Если таблица делится пополам, и искомые данные есть и в первой и во второй половине таблицы, как тогда поиск происходит?

    • @user-ix4cm7ch5z
      @user-ix4cm7ch5z ปีที่แล้ว

      скорее всего другой поиск тогда работает ,либо возвращается потом во вторую половину

    • @mihax56
      @mihax56 ปีที่แล้ว +2

      не существует в природе таблиц, отсортированных по первичному ключу - на диске это всегда фарш. поиск всегда идет по индексу, т.е. бинарному дереву в общем случае.

    • @dmitriypolynin7273
      @dmitriypolynin7273 ปีที่แล้ว +2

      Поиск идет по отсортированному по условию индексу, файлу индекса, который отдельно от таблицы и много меньше таблицы. После по ссылке прыгаем на запись таблицы. Все это происходит автоматически во время запроса, ничего не нужно мудрить. Если индексы правильно сделаны то работает быстро.
      На собеседованиях умные девочки мнящие себя программистами задают вопросы типа - чем пользуетесь что бы оптимизировать работу БД, подразумевая что ты должен им живо рассказать о владении какой ни будь модной программой оптимизатором. Я всегда говорю что пользуюсь мозгом.

  • @yodapunishes
    @yodapunishes 3 หลายเดือนก่อน

    То ли я прослушал, то ли автор не уточнил:
    1. В видео рассмотрен только самый популярный тип BTree
    2. BTree применяется не ко всем типам данных, потому и существуют другие (GIN, GIST, etc)
    3. У других методов доступа (индексов) алгоритмическая сложность другая
    4. Бывают ещё условные, покрывающие, функциональные и другие разновидности индексов

  • @alexalex543
    @alexalex543 3 หลายเดือนก่อน

    Как ищет бинарно число понятно, а как ищет категорию, где значение это строка?? Как он сравнивает текст по бинарному поиску... (пример некластеризованного индекса)? Кто то может пояснить?

    • @yodapunishes
      @yodapunishes 3 หลายเดือนก่อน

      Любой текст это представление в определенной кодировке, то есть где символу соответствует число

  • @renatsu_dev
    @renatsu_dev 4 หลายเดือนก่อน

    Разве индексы не эффективней проверять столбцы на NULL. Мне кажется проиндексированный столбец эффективнее решит задачу SELECT * FROM TABLE WHERE smth IS NOT NULL

  • @arshanskiysergey2791
    @arshanskiysergey2791 11 หลายเดือนก่อน +1

    а зачем нужен кластеризованный индекс, если он полностью копирует колонку с первичным ключом? Почему тогда сразу по таблице и не искать - по этой самой колонке?

    • @arshanskiysergey2791
      @arshanskiysergey2791 10 หลายเดือนก่อน

      наверное для оптимизации: чтобы была возможность быстро выгрузить таблицу индексов в память и найти в ней нужный элемент. А основная таблица может быть во много раз больше, поэтому ее лучше всю без надобности не выгружать.

  • @---fq2cz
    @---fq2cz ปีที่แล้ว

    4:05. Не бывает САМОГО оптимального пути😅Он либо оптимальный, либо нет. Мой препод дал бы по шапке за это😂

    • @reepka4871
      @reepka4871 ปีที่แล้ว +2

      Это скорее придирка к словам..
      А так то можно ещё вспомнить, что есть локальные оптимумы, а САМЫЙ оптимальный тогда - отнести глобальному оптимуму 🤷‍♀️

  • @user-ub6cv6nk5u
    @user-ub6cv6nk5u 5 วันที่ผ่านมา

    Хотел посмотреть про SQL инъекции, оказалось, что название не правильно прочитал.

  • @VaeV1ct1s
    @VaeV1ct1s ปีที่แล้ว

    Нихрена не понятно. Если у нас записей 'electronics' больше одной, то таблица индексов будет реализовывать o2m? Тогда, нужно будет получить все внешние ключи из индексной таблицы, и для каждого провести поиск по ключу в основной таблице?

  • @MrCursedsin
    @MrCursedsin ปีที่แล้ว

    Всё же не совсем понятно, как проверить была ли колонка проиндексирована или нет

  • @o1ego1eg
    @o1ego1eg ปีที่แล้ว

    когда не использовать индексы: *перечисляются все реальные кейсы :)

  • @volodymyranufriev2553
    @volodymyranufriev2553 ปีที่แล้ว +2

    При постоянных обновлениях индексы обновляться не будут и станут бесполезны - ну это очень сильное заявление. Если есть БД, где дела именно так обстоят - это какая-то очень ограниченная БД.
    Но заявлять такое про все базы данных - это неправильно.
    В целом ролик симпатичный, но вредный для начинающих, и режет глаз спорными заявлениями для опытных

  • @MyxaTcakatuha
    @MyxaTcakatuha ปีที่แล้ว

    в чем разница один индекс на два столбца или два отдельных индекса на эти столбцы? никто нигде этого не объясняет

    • @jumper_in_maple4814
      @jumper_in_maple4814 ปีที่แล้ว

      Ну вот если у тебя это столбцы "категория" и "подкатегория" и ты напишешь запрос на поиск по отдельности (where category = 1 в одном запросе и where subcategory = 2 в другом), то тогда надо бы 2 индекса, будет больше места занимать.
      А если у тебя связанные поля, когда ты точно знаешь, что нет товаров без категорий и подкатегорий и поиск будешь вести всегда по связным - делаешь индекс на оба поля сразу. Места меньше, индекс один, обновляться будет быстрее. А поиск что так будет быстро работать, что сяк.

  • @dmitriypolynin7273
    @dmitriypolynin7273 ปีที่แล้ว +1

    не мучайтесь, пользуйтесь средой разработки а не websql например dbforge для mysql тогда создание или удаление индексов делается через интерфейс так проще и нагляднее.
    Хотя и синтаксис нужно знать, но так нагляднее и структура видна и данные и индексы и триггеры и все что нужно.

  • @user-bk9mn8de5c
    @user-bk9mn8de5c ปีที่แล้ว +2

    Очень поверхностное и спорное, нередко просто ошибочное изложение материала. Что-то из серии - попробую понять материал, объясняя его другим. Может автор имел ввиду какую-то конкретную экзотическую СУБД?

  • @Evgeniy19856
    @Evgeniy19856 ปีที่แล้ว

    Есть ещё фильтрованные индексы.

  • @ulmasjonkilichov487
    @ulmasjonkilichov487 ปีที่แล้ว +1

    Очень вводная информация. Нет ничего про b-tree, hash table, gist и тд

  • @StrangerInTheKy
    @StrangerInTheKy ปีที่แล้ว +1

    "При постоянных обновлениях БД индексы обновляться не будут" - адская чушь. Как и весь раздел "когда применять индексы".

    • @evgeniynoble6064
      @evgeniynoble6064 11 หลายเดือนก่อน

      Я тоже этого не понял, начал гуглить и ничего не нашел. Объяснит кто?

    • @uzurbatya
      @uzurbatya 2 หลายเดือนก่อน

      Когда народ таймкоды начнёт приводить к своим словам?

  • @dimass67
    @dimass67 5 หลายเดือนก่อน +1

    На 5.35 примерно какая-то противоречивость которая осталась без объяснения.
    При постоянных обновлениях БД (а именно при добавлении данных как я понял в данном примере) индексы обновляться не будут. При этом ранее было сказано что при добавлении данных сначала обновляется исходная таблица а затем ее индексы.
    Вот через какой промежуток времени между добавлениями, БД будет считаться постоянно обновляемой?.
    И в конце на 10.10 сказано про какие-то столбцы которые часто обрабатываются. Как это связано с предыдущей информацией? Ведь добавление в БД это инсерт а значит добавляется строка со всеми её столбцами. Следовательно обрабатываются все столбцы и их лучше не индексировать.

  • @hellohowareyou267
    @hellohowareyou267 10 หลายเดือนก่อน

    Фак ё инглиьиш

  • @AlexanderZolnikov
    @AlexanderZolnikov ปีที่แล้ว +12

    Видимо, автор, как и я, в прошлом, ms sql разработчик. В той же сап хане, что all memory, постгре, оракле, нет явного деления на кластерные и не кластерные индексы. Так что видео, в целом, такое себе авно. Там все работает по другому, в отличии от мс скл, особенно с тригерами. В той же сап хане, постгре, оракле, нет явного деления на кластерные и не кластерные индексы. Так что видео, в целом, такое себе, мягко говоря, ждал большего. Отчасти, это и моя боль, пока я не стал работать с другими субд и не ощутил разности.. Автор не знает о чем говорит.

    • @turkeyrelocation
      @turkeyrelocation ปีที่แล้ว +3

      Поддерживаю. Похоже на пересказ статьи ради пересказа, без какого либо погружения в тему. Тогда уж пусть какая-нибудь тян с сексуальным голосом читает текст

    • @dmitriypolynin7273
      @dmitriypolynin7273 ปีที่แล้ว

      знает, но в рамках мускля , для ознакомления достаточно.

  • @vladimirlos5432
    @vladimirlos5432 ปีที่แล้ว

    Триста страниц типовой книги по "введеню в SQL" - за 9 минут... :)

    • @nicholasspezza9449
      @nicholasspezza9449 ปีที่แล้ว +4

      только дурачки так считают

    • @vladimirlos5432
      @vladimirlos5432 ปีที่แล้ว

      @@nicholasspezza9449 У вас - проблемы...

    • @nicholasspezza9449
      @nicholasspezza9449 ปีที่แล้ว +1

      @@vladimirlos5432 не спамь своей чушью, клоун

    • @vladimirlos5432
      @vladimirlos5432 ปีที่แล้ว

      @@nicholasspezza9449 У вас - очень серьёзные проблемы.

  • @nikolosmiron1481
    @nikolosmiron1481 ปีที่แล้ว +1

    Слабое видео

  • @konanvarvar353
    @konanvarvar353 3 หลายเดือนก่อน

    Нихуя не понял

  • @user-rg3sp6yk3b
    @user-rg3sp6yk3b 3 หลายเดือนก่อน

    пилляя, я и сам умею читать, лучше б картинки какие-нибудь запихал вместо бесполезного текста. А так, в принципе, понятный материал, спасибо

  • @RoaringOrange
    @RoaringOrange ปีที่แล้ว +1

    6:29 Кластеризованный индекс использует первичный ключ? Большей бредятины не слышал...