[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Внешние ключи
zvezda_t
Здравствуйте!

Скажите пожалуйста, использование внешних ключей увеличивает быстродействие?
Если у меня есть связка двух таблиц - Первичный (id1) <- Внешний ключ (f_id1).
table1
-------
id1 (PR Key)
....

table2
-------
id
f_id1 (FR Key)
.....

То есть необходимость создавать Индекс по полю являющемуся внешним ключом?



Спустя 9 минут, 14 секунд (25.02.2011 - 13:53) T1grOK написал(а):
Я конечно замеры не проводил, но думаю что быстродействие не увеличивается. Внешние ключи используются для "правильного" распределения информации в БД, а также для предотвращения возникновения избыточности информации(что является основополагающим фактором при проектировании БД).

Спустя 5 минут, 50 секунд (25.02.2011 - 13:59) inpost написал(а):
zvezda_t
Внешний ключ делается для целостности данных, как я понимаю, первичные и вторичные внутренние ключи как раз для кеширования.

Спустя 15 минут, 40 секунд (25.02.2011 - 14:15) zvezda_t написал(а):
обратный вопрос - создание внешнего ключа - много ресурсов забирает? При добавлении записей в таблицу, замедляется процесс записи из-за наличия внешних ключей? Есть смысл их вообще делать?

Спустя 20 минут, 4 секунды (25.02.2011 - 14:35) T1grOK написал(а):
Не заморачивайтесь над этим. Внешние ключи нужны в БД, как нам воздух. Без них избыточность данных неизбежна.

Спустя 10 минут, 9 секунд (25.02.2011 - 14:45) zvezda_t написал(а):
Цитата
Внешние ключи нужны в БД, как нам воздух.

T1grOK, ничего себе! побежала строить внешние ключи smile.gif

Спустя 9 минут, 51 секунда (25.02.2011 - 14:55) glock18 написал(а):
Внешние ключи как раз таки снижают быстродействие при вставке и добавлении. Очевидно, что для каждого ключа мускулю придется смотреть в индекс другой таблицы.

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

Спустя 2 минуты (25.02.2011 - 14:57) inpost написал(а):
T1grOK
А с другой стороны ничего не удаляется в вконтакте, из-за дефрагментации данных.

Спустя 1 минута, 18 секунд (25.02.2011 - 14:58) zvezda_t написал(а):
glock18 хм...
тогда обратно удаляю что ли? rolleyes.gif

Спустя 12 минут, 48 секунд (25.02.2011 - 15:11) T1grOK написал(а):
Нужно голосование устроить, а то смотрю мнения разделились.

Спустя 6 минут, 18 секунд (25.02.2011 - 15:17) zvezda_t написал(а):
T1grOK
готово smile.gif

Спустя 1 минута, 10 секунд (25.02.2011 - 15:18) glock18 написал(а):
zvezda_t
разберись как работают, и можешь удалять, а можешь оставить, если быстродействие не упадет сильно. вообще практика показывает, что в большинстве случае реальные внешние ключи не так нужны. пожалуй, основной вариант который приходит в голову - случай когда значения в колонке с индексами могут меняться, что обычно совершенно ни в какой форме не проявляется в отношении различных айдишников, которые типично и связывают таблицы.

ЗЫ: а вопрос изучи, знать полезно

Спустя 14 минут, 24 секунды (25.02.2011 - 15:33) zvezda_t написал(а):
Спасибо, glock18, да я читаю smile.gif пытаюсь разобраться smile.gif
(и сразу экспериментирую создаю разного рода индексы и смотрю скорость изменения запросов smile.gif )

ЗЫ Может хорошую книжку по проектированию БД подскажите, чтоб про индексы почитать rolleyes.gif

Спустя 3 часа, 19 минут, 54 секунды (25.02.2011 - 18:53) T1grOK написал(а):
Книжек конкретных не подскажу. Но смотрите, что-то по оптимизации БД и запросов и т.д. Немаловажно не только наиболее оптимально спроектировать БД, а его и грамотно сформировать запросы, которые в различных вариантах реализации могут очень сильно отличаться по скорости.
На сайте phpclub.ru есть статьи по оптимизации запросов. Эта же информация есть в журнале PHPInside.


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.