PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: blonduser  
Дата: 15.04.16 18:46
Оценка:
Всем доброго времени суток!

В чем различие по скорости выполнения запросов между PRIMARY KEY(FOREIGN KEY) и обычного индекса?

Или где об этом различии можно почитать.

Спасибо.
Re: PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: #John Европа https://github.com/ichensky
Дата: 15.04.16 21:05
Оценка:
Здравствуйте, blonduser, Вы писали:

B>Всем доброго времени суток!


B>В чем различие по скорости выполнения запросов между PRIMARY KEY(FOREIGN KEY) и обычного индекса?

https://en.wikipedia.org/wiki/Database_index
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re: PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: wildwind Россия  
Дата: 19.04.16 06:39
Оценка: 2 (1) +2
Здравствуйте, blonduser, Вы писали:

B>Всем доброго времени суток!


B>В чем различие по скорости выполнения запросов между PRIMARY KEY(FOREIGN KEY) и обычного индекса?


Primary key и foreign key это ограничения целостности, элементы логической структуры БД. Индекс это структура для эффективного доступа к данным таблицы, элемент физической структуры БД. То есть концептуально это совсем разные понятия, напрямую не сравнимые друг с другом.

В принципе, primary/foreign key может существовать и без соответствующего индекса и продолжать выполнять свою задачу. Если же он поддерживается индексом, то это не какой-то особый индекс, а самый обычный.

На скорость выполнения запросов влияет и то, и другое. При построении плана выполнения запроса независимо учитывается и наличие индексов, и имеющиеся ограничения (со всей пользой, которую можно извлечь из этого знания).
Re[2]: PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: blonduser  
Дата: 20.04.16 10:43
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, blonduser, Вы писали:


B>>Всем доброго времени суток!


B>>В чем различие по скорости выполнения запросов между PRIMARY KEY(FOREIGN KEY) и обычного индекса?


W>Primary key и foreign key это ограничения целостности, элементы логической структуры БД. Индекс это структура для эффективного доступа к данным таблицы, элемент физической структуры БД. То есть концептуально это совсем разные понятия, напрямую не сравнимые друг с другом.


W>В принципе, primary/foreign key может существовать и без соответствующего индекса и продолжать выполнять свою задачу. Если же он поддерживается индексом, то это не какой-то особый индекс, а самый обычный.


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


Вот именно мой интерес был в том, что проверка целостности не замедляет работу с данными(добавление, удаление, редактирование).
Re[3]: PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: wildwind Россия  
Дата: 20.04.16 12:06
Оценка:
Здравствуйте, blonduser, Вы писали:

B>Вот именно мой интерес был в том, что проверка целостности не замедляет работу с данными(добавление, удаление, редактирование).


Да, при выборке помогает, а при изменении замедляет. Особенно если нет соответствующего индекса. Индекс сам по себе тоже немного замедляет, ведь его нужно поддерживать в актуальном состоянии. Но без индекса гораздо хуже.
Re[4]: PRIMARY KEY(FOREIGN KEY) против INDEX (sql2008)
От: blonduser  
Дата: 20.04.16 12:22
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, blonduser, Вы писали:


B>>Вот именно мой интерес был в том, что проверка целостности не замедляет работу с данными(добавление, удаление, редактирование).


W>Да, при выборке помогает, а при изменении замедляет. Особенно если нет соответствующего индекса. Индекс сам по себе тоже немного замедляет, ведь его нужно поддерживать в актуальном состоянии. Но без индекса гораздо хуже.

Ок. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.