Вместо того чтобы наглядно, на конкретном примере, показать как работает индекс полез в смежные темы. А тема индекса осталась нераскрытой. За подачу 2 балла.
Владимир, скажите пожалуйста, стоит ли перекладывать функции вычисления на движок БД или вычисления лучше производить скриптовыми языками (например php)? К примеру нужно выбрать разницу между ценами которые записаны в двух полях. Так что лучше, построить запрос таким образом: t1.f1 - t1.f2 или выбрать поля и средствами php уже произвести вычисления? В общем, есть ли существенная разница где производить вычисления, средствами движка БД или средствами php?
конечно же на стороне движка БД. Задача СУБД - ускорить такие вычисления и выполнение запросов. Это одна из главных задач СУБД, чтобы пользователь быстрее выполнял задачи движком СУБД, а не самостоятельно в своем языке программирования. Для таких целей движки СУБД под капотом используют кучу разных оптимизаций, которые Вы не примените в коде вашего приложения.
Володя, я не понял, должен признать. Я использую в запросе внешний ключ нужной таблицы и нахожу нужную мне строку без создания специально каких-то индексов, которые могут формировать соизмеримую по размерам с основной таблицу. ЗАЧЕМ ИНДЕКСИРОВАТЬ? Это структурирование данных по определенному (одному из приведенных 4-х) алгоритму для того, чтобы по столбцу поиск производился быстрее?
"использую в запросе внешний ключ нужной таблицы и нахожу нужную мне строку без создания специально каких-то индексов" - это поиск последовательным перебором. индекс же сразу по значению поля говорит какой по счету будет нужная строка в исходной таблице
не знаю, актуально ли еще, но, если совсем грубо, то если Вы "используете в запросе внешний ключ нужной таблицы", то поиск производится построчно (видим в консоли "affected rows"), если же выборка производится с помощью индекса, то БД сразу понимает, в какой строке нужно искать нужное значение и не тратит ресурсы на перебор этих строк. (что, если строк у Вас в БД 100500+?)
Согласен с Владом и Knave Spammer. Только хотел бы уточнить. Оба использовали выражение "сразу же находит" в противоположность к последовательному поиску. Последовательный поиск производится за линейное время. "Сразу же" - это константное время. Алгоритмы, которые показал Володя не факт, что работают за константное время. Поэтому точнее было бы сказать "Индексирование позволяет находить быстрее, чем последовательным перебором"
если вы используете внешний ключ для ссылки на главную таблицу - это значит, что у главной таблицы есть ПЕРВИЧНЫЙ КЛЮЧ. А когда вы для какой-либо таблицы создаете ПЕРВИЧНЫЙ КЛЮЧ - он автоматически создает под капотом индекс. Так что считайте, что в вашем примере поиск идет по индексу.
Я не встречал объяснений лучше этого! Этот автор - талантище объяснять!
Володя, не оставляйте дело, вы даете очень правильную информацию в неокрепшие умы.
Супер! Отличная подача материала.
Спасибо за видео! Мне кажется Вам стоит создать отдельный плейлист по SQL.
Оставили бы ссылки на видео про hashmap и bitmap
Спасибо Володя!
Что такое кластерный/некластерный индекс ?
думаю что кластерный это всегда тот индекс который лежит внутри самой таблицы и привязывается к primary key
Кластеризованный и нет. Кластеризованный меняет физическое расположение записей в таблице на диске
а почему имена хорошо исп через Бинарное дерево, они же наоборот часто повторяются и не уникальные
Аминь.
Только вы не рассказали зачем нужен индекс и как его использовать
ну дорогой, думаю за 2 года ты уже узанл что к чему :)
@@oilondabeats9011 да, за 2 года я узнал:)
Разница между innodb и myisam... Интересная тема для начинающих изучать бд.. имхо
Вместо того чтобы наглядно, на конкретном примере, показать как работает индекс полез в смежные темы. А тема индекса осталась нераскрытой. За подачу 2 балла.
Владимир, скажите пожалуйста, стоит ли перекладывать функции вычисления на движок БД или вычисления лучше производить скриптовыми языками (например php)? К примеру нужно выбрать разницу между ценами которые записаны в двух полях. Так что лучше, построить запрос таким образом: t1.f1 - t1.f2 или выбрать поля и средствами php уже произвести вычисления? В общем, есть ли существенная разница где производить вычисления, средствами движка БД или средствами php?
конечно же на стороне движка БД. Задача СУБД - ускорить такие вычисления и выполнение запросов. Это одна из главных задач СУБД, чтобы пользователь быстрее выполнял задачи движком СУБД, а не самостоятельно в своем языке программирования. Для таких целей движки СУБД под капотом используют кучу разных оптимизаций, которые Вы не примените в коде вашего приложения.
Без воды, конкретно и понятно
В начале сказано что создается отдельная таблица, а где она, как её посмотреть?
видео супер
Спасибо за проделанную работу!
даже не думал, что оно так
ссылки на структуры данных выкладывай в описании, будет удобно
Oчень очень годное видео
Володя, я не понял, должен признать. Я использую в запросе внешний ключ нужной таблицы и нахожу нужную мне строку без создания специально каких-то индексов, которые могут формировать соизмеримую по размерам с основной таблицу. ЗАЧЕМ ИНДЕКСИРОВАТЬ? Это структурирование данных по определенному (одному из приведенных 4-х) алгоритму для того, чтобы по столбцу поиск производился быстрее?
"использую в запросе внешний ключ нужной таблицы и нахожу нужную мне строку без создания специально каких-то индексов" - это поиск последовательным перебором.
индекс же сразу по значению поля говорит какой по счету будет нужная строка в исходной таблице
не знаю, актуально ли еще, но, если совсем грубо, то если Вы "используете в запросе внешний ключ нужной таблицы", то поиск производится построчно (видим в консоли "affected rows"), если же выборка производится с помощью индекса, то БД сразу понимает, в какой строке нужно искать нужное значение и не тратит ресурсы на перебор этих строк. (что, если строк у Вас в БД 100500+?)
Согласен с Владом и Knave Spammer. Только хотел бы уточнить. Оба использовали выражение "сразу же находит" в противоположность к последовательному поиску. Последовательный поиск производится за линейное время. "Сразу же" - это константное время. Алгоритмы, которые показал Володя не факт, что работают за константное время. Поэтому точнее было бы сказать "Индексирование позволяет находить быстрее, чем последовательным перебором"
@@victorklimov5254 время index seek можете считать константным и незначительным
если вы используете внешний ключ для ссылки на главную таблицу - это значит, что у главной таблицы есть ПЕРВИЧНЫЙ КЛЮЧ. А когда вы для какой-либо таблицы создаете ПЕРВИЧНЫЙ КЛЮЧ - он автоматически создает под капотом индекс. Так что считайте, что в вашем примере поиск идет по индексу.
Одно слово - почти!
четко! небесный лайк!
Правильно ли используется термин коллизия? В сетях коллизия это когда 2 процесса пытаются захватить 1 ресурс. А здесь кто кому мешает?
Здесь под коллизией имеется ввиду, что разные значения будут давать одинаковый хэш-код.
Классно, спасибо)
Плохое негодное объяснение.
Молодец
спасибо)
Здесь MAP == отображение
Зрелище не для слабых умов
абсолютно непонятно
Батюшка?
Максимально непонятно объяснил. Дизлайк.
Не понятно