Каковы различие между ограничениями основного, уникального и внешнего ключа и индексы?

расширение PECL APD используется следующим образом:


После, проанализируйте сгенерированный файл с помощью pprofp.

Пример произвел:

Trace for /home/dan/testapd.php
Total Elapsed Time = 0.00
Total System Time  = 0.00
Total User Time    = 0.00


Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace

Предупреждение: последний выпуск APD датирован 2004, расширение больше не сохраняется и имеет различные проблемы compability (см. комментарии).

23
задан DineshDB 23 March 2018 в 07:22
поделиться

3 ответа

Первичный ключ и Уникальный ключ являются ограничениями целостности объекта

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

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

  • KEY или INDEX относятся к нормальному неуникальному индексу. Разрешены неотличимые значения для индекса, поэтому индекс может содержать строки с одинаковыми значениями во всех столбцах индекса. Эти индексы не обеспечивают какой-либо структуры ваших данных, поэтому они используются только для ускорения запросов.
  • UNIQUE относится к индексу, в котором все строки индекса должны быть уникальными. То есть одна и та же строка может не иметь идентичных значений, отличных от NULL, для всех столбцов в этом индексе, как другая строка. Индексы UNIQUE не только используются для ускорения запросов, но и для обеспечения структуры данных, поскольку система базы данных не позволяет нарушать это правило отдельных значений при вставке или обновлении данных. Ваша система базы данных может разрешить УНИКАЛЬНЫЙ индекс для столбцов, которые допускают значения NULL, в этом случае две строки могут быть идентичными, если они обе содержат значение NULL (NULL считается не равным самому себе), хотя это, вероятно, нежелательно в зависимости от вашего приложения.
  • PRIMARY действует точно так же, как индекс UNIQUE, за исключением того, что он всегда называется «PRIMARY», и в таблице может быть только один (и он всегда должен быть; хотя некоторые системы баз данных этого не требуют). ПЕРВИЧНЫЙ индекс предназначен для однозначной идентификации любой строки в таблице, поэтому его не следует использовать ни в каких столбцах, допускающих значения NULL. Ваш ПЕРВИЧНЫЙ индекс всегда должен располагаться на наименьшем количестве столбцов, достаточном для однозначной идентификации строки. Часто это всего лишь один столбец, содержащий уникальный автоматически увеличивающийся номер, но если есть что-то еще, что может однозначно идентифицировать строку, например "код страны" в списке стран вы можете использовать это вместо этого.
  • Индексы FULLTEXT отличаются от всех вышеперечисленных, и их поведение в разных системах баз данных отличается больше. В отличие от трех приведенных выше, которые обычно представляют собой b-дерево (с возможностью выбора, сортировки или диапазонов, начиная с самого левого столбца) или хеша (с возможностью выбора, начиная с самого левого столбца), индексы FULLTEXT полезны только для полнотекстового поиска, выполняемого с помощью Предложение MATCH () / AGAINST ().

см. Различия между INDEX, PRIMARY, UNIQUE, FULLTEXT в MySQL?

26
ответ дан 29 November 2019 в 00:57
поделиться

Вот некоторые ссылки для вас:

Ограничение первичного и внешнего ключа.

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

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

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

7
ответ дан 29 November 2019 в 00:57
поделиться

Ключ / индекс: Ключ - это аспект ЛОГИЧЕСКОГО дизайна базы данных, индекс - это аспект ФИЗИЧЕСКОГО дизайна базы данных. Ключ соответствует ограничению целостности, индекс - это метод физической записи значений, который может быть с пользой применен при применении этих ограничений.

Первичный / внешний: «Первичный» ключ - это набор атрибутов, значения которых должны образовывать комбинацию это уникально во всей таблице. Таких наборов может быть несколько (> 1 ключ), а слово «первичный» - это пережиток прежних дней, когда дизайнер был вынужден выбрать один из этих нескольких ключей как «самый важный / релевантный». . Причина этого заключалась прежде всего в сочетании с внешними ключами:

Подобно «первичному» ключу, «внешний» ключ также является набором атрибутов. Значения этих атрибутов должны образовывать комбинацию, которая является существующим значением первичного ключа в указанной таблице. Я не знаю, насколько строго это правило все еще применяется в SQL сегодня. Терминология все равно осталась.

Уникальное: ключевое слово, используемое для обозначения того, что индекс не может принимать повторяющиеся записи. Уникальные индексы, очевидно, являются отличным средством для принудительного применения первичных ключей. В той степени, в которой слово «уникальный» используется в контексте ЛОГИЧЕСКОГО дизайна, оно излишне, небрежно, ненужно и сбивает с толку. Ключи (то есть первичные ключи) уникальны по определению.

ключевое слово, используемое, чтобы указать, что индекс не может принимать повторяющиеся записи. Уникальные индексы, очевидно, являются отличным средством для принудительного применения первичных ключей. В той степени, в которой слово «уникальный» используется в контексте ЛОГИЧЕСКОГО дизайна, оно излишне, небрежно, ненужно и сбивает с толку. Ключи (то есть первичные ключи) уникальны по определению.

ключевое слово, используемое, чтобы указать, что индекс не может принимать повторяющиеся записи. Уникальные индексы, очевидно, являются отличным средством для принудительного применения первичных ключей. В той степени, в которой слово «уникальный» используется в контексте ЛОГИЧЕСКОГО дизайна, оно излишне, небрежно, ненужно и сбивает с толку. Ключи (то есть первичные ключи) уникальны по определению.

4
ответ дан 29 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

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