Как использовать столбцы индекса MySQL?

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

Ответвления

Без репозитория исходного кода невозможно создать ответвления (или копии/поток/и т.д.) Вашего кода для конкретных целей. Быть неспособностью, чтобы создать и объединить ответвления является одной из самых больших вещей, которая лишает права VSS на то, чтобы быть реальной системой управления исходным кодом. Некоторые цели ответвления включают:

Исправление ошибки

Иногда необходимо разрешить ошибку и сделать это в месте, далеко формируют магистраль или соединяют версию магистралью кода. Это может быть должно разрешить проблему в тестовой среде или всевозможных причинах. Если у Вас есть инструмент управления версиями, необходимо смочь легко сделать новое ответвление (что-то, что VSS сосет в) исправлять ошибку, и смочь объединиться это назад в магистраль кодирует, если необходимый

Корректировочная версия

Это могло бы быть почти таким же как исправление ошибки, но сделанный после того, как код был выпущен к производству. Примеры были бы для пакетов фиксации, сервисных выпусков, и т.д. Снова, Вы хотите смочь объединить изменения назад в соединительную линию, если необходимый

Новая возможность

Иногда необходимо запустить разработку новой версии при поддержании текущего кода. Например, Вы выпускаете и поддерживаете v1.0, но должны запустить работу над v2.0 при поддержании v1.0. Справка ответвлений разрешает эту ситуацию

Метки/Маркировка

Другая вещь, которую делают системы управления исходным кодом, делают снимки исходного кода в конкретном моменте времени. Их называют маркировками в VSS, тегами в подверсии, и т.д. Путем создания их регулярно и соединения их с некоторой существенной вехой в проекте, затем становится возможно определить то, что точно изменилось в коде между выпусками. Это может быть важно для аудиторов, но также и в разыскивании источника/объема проблемы. VSS также получает сбой здесь, потому что VSS только присваивает версию файлам, не каталогам. Это означает, что невозможно воссоздать предыдущую версию системы, если Вы переименовываете/перемещаете/удаляете файлы или каталоги в репозитории (что-то, что происходит много, если Вы осуществляете рефакторинг). Хорошие системы управления исходным кодом как Подверсия делают просто это.

14
задан OMG Ponies 4 October 2009 в 20:41
поделиться

5 ответов

Первичный

Первичный ключ, как следует из названия, является основным ключом таблицы и должен быть столбцом, который обычно используется для выбора строк этой таблицы. Первичный ключ всегда является уникальным ключом (уникальным идентификатором). Первичный ключ не ограничивается одним столбцом, например, в справочных таблицах (многие ко многим) часто имеет смысл иметь первичный ключ, включающий два или более столбца.

Уникальный

Уникальный индекс гарантирует, что ваш СУБД не принимает повторяющиеся записи для этого столбца. Вы спросите: «Внешние ключи?» НЕТ! Это было бы бесполезно, поскольку внешние ключи по определению склонны к дублированию (один-ко-многим, многие-ко-многим).

Индекс

Дополнительные индексы могут быть размещены в столбцах, которые часто используются для SELECTS (и JOINS), что часто бывает с внешними ключами. Во многих случаях запросы SELECT (и JOIN) будут выполняться быстрее, если внешние ключи проиндексированы.

Однако обратите внимание, что - как пояснил SquareCog - индексы обновляются при любых изменениях данных, поэтому да, добавление дополнительных индексов может привести к ухудшению производительности INSERT / UPDATE. Если индексы не обновлялись, вы могли бы получить различную информацию в зависимости от того, решил ли оптимизатор выполнить ваш запрос по индексу или необработанной таблице - крайне нежелательная ситуация.

Это означает, что вам следует тщательно оценить использование индексы. На основании этого можно быть уверенным в одном: Следует избегать неиспользуемых индексов, соответственно. удалено !

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

Это означает, что вам следует тщательно оценить использование индексы. На основании этого можно быть уверенным в одном: Следует избегать неиспользуемых индексов, соответственно. удалено !

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

Это означает, что вам следует тщательно оценить использование индексы. На основании этого можно быть уверенным в одном: Следует избегать неиспользуемых индексов, соответственно. удалено !

20
ответ дан 1 December 2019 в 12:01
поделиться

Я не очень хорошо знаком с MySQL, однако считаю, что для большинства серверов баз данных справедливо следующее. Индекс - это сбалансированное дерево, которое используется, чтобы позволить базе данных сканировать таблицу на предмет данных. Например, у вас есть следующая таблица.

CREATE TABLE person (
    id    SERIAL,
    name  VARCHAR(20),
    dob   VARCHAR(20)
);

Если вы создали индекс для поля «имя», это создаст сбалансированное дерево для этих данных в таблице для столбца имени. Сбалансированные древовидные структуры данных позволяют ускорить поиск результатов (см. http://www.solutionhacker.com/tag/balanced-tree/ ).

Однако вы должны отметить, что индексирование столбца позволяет вам только поиск по данным, хранящимся в базе данных. Например:

Это не сможет выполнять поиск по индексу, а вместо этого будет выполнять последовательное сканирование таблицы, вызывая UPPER () для каждой строки столбца: имя в таблице.

select *
from person
where UPPER(name) = "BOB";

Это также будет иметь следующий эффект, потому что индекс будет отсортирован, начиная с первой буквы. Однако при замене поискового запроса на "% B" будет использован индекс.

select *
from person
where name like "%B"
3
ответ дан 1 December 2019 в 12:01
поделиться

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

Полезно добавлять индексы к полям, которые также используются для поиска по множеству объектов, например, по названию улицы или фамилии, так как это опять же улучшит производительность. Не обязательно быть уникальным.

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

2
ответ дан 1 December 2019 в 12:01
поделиться

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

0
ответ дан 1 December 2019 в 12:01
поделиться

PRIMARY определяет первичный ключ, да.

UNIQUE просто определяет, что указанное поле должно быть уникальным, оно не имеет ничего общего с внешними ключами.

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

0
ответ дан 1 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: