Я не парень ДБ.Но мне нужно создавать таблицы и выполнять над ними операции CRUD.Я запутался, должен ли я создать индекс по всем столбцам по умолчанию или нет?Вот мое понимание, которое я учитываю при создании индекса.
Индекс в основном содержит диапазон расположения памяти (начальная область памяти, где хранится первое значение, до конечной области памяти, где хранится последнее значение).Поэтому, когда мы вставляем любое значение в индекс таблицы, столбец необходимо обновить, поскольку он получил еще одно значение, но обновление значения столбца не окажет никакого влияния на значение индекса. Правильно? Итак, суть в том, что когда мой столбец используется в соединении между двумя таблицами, мы должны рассмотреть возможность создания индекса для столбца, используемого в объединении, но все остальные столбцы можно пропустить, потому что если мы создадим индекс для них, это потребуетстоимость обновления значения индекса при добавлении нового значения в столбец. Верно?
Рассмотрим этот сценарий, в котором таблица mytable
содержит два трех столбца, например col1
, col2
, col3
.Теперь мы запускаем этот запрос
select col1,col2 from mytable
Теперь здесь есть два случая.В первом случае мы создаем индекс по col1
и col2
.Во втором случае мы не создаем никакого индекса. ** Согласно моему пониманию, случай 1 будет быстрее, чем случай 2, потому что в случае 1 мы, оракул, можем быстро найти ячейку памяти столбца.Так что здесь я не использовал ни одного столбца соединения, но индекс здесь помогает.Так я должен рассмотреть создание индекса здесь или нет? **
Что если в том же сценарии выше, если мы запускаем
select * from mytable
вместо
select col1,col2 from mytable
Поможет ли здесь индекс?