2016-11-17 11 views
0

Скажем, у меня есть такие данные, например:SQL - сложна ли временная сложность для внешних ключей O (1)?

User: 
-id 
-name 

Comment: 
-id 
-user id (FK) 
-content 

Так что, когда я запрашивая БД, чтобы найти пользователя, который связан с комментарием, не делает его пройти через все строки в пользователей, пока он находит пользователя с правильным идентификатором (O (n))?
Или он индексируется как какая-то хеш-таблица, и БД знает, где именно найти пользователя (O (1))?

UPDATE: OK очевидно мне нужно перефразировать: Это возможно сделать это O (1) с правильной индексации?

+4

SQL - это спецификация. Ответ на ваш вопрос может и, вероятно, будет варьироваться между каждой реализацией. Оптимизаторы запросов используют индексы для ускорения сопоставления столбцов, когда они доступны. – scottb

+1

Сложность времени используется для измерения эффективности алгоритма. Поскольку у вас нет исходного кода, используемого в СУБД, и реализация варьируется среди них, невозможно применить большую меру O ее эффективности. Если вы используете индексы соответствующим образом, обычно вы можете запросить СУБД предоставить вам информацию об эффективности с использованием EXPLAIN PLAN или его эквивалента в вашей СУБД. –

+3

Вам нужно указать, какие из rdbms вы спрашиваете. Индексы обычно реализуются с помощью B-деревьев, что означает O (log n), хотя это [выглядит как] (https://msdn.microsoft.com/en-us/library/dn133190.aspx). Таблицы SQL Server в памяти могут имеют индексы хэш-таблицы. Могут быть и другие реализации, которые тоже используют их. – Blorgbeard

ответ

0

Да, потому что это сложность поиска по индексу hash.

Тема (реляционная) query optimization (которая также может быть названа реализацией запроса). Интернет, помимо учебников и слайдов, вы можете прочитать документацию из определенных продуктов, которая будет включать такие вещи, как индексы и планы запросов.

SQL - это язык, и его реализация зависит от СУБД. Даже индексы не имеют гарантированного стандартного поведения, кроме аспектов ограничения PRIMARY KEY и UNIQUE.

 Смежные вопросы

  • Нет связанных вопросов^_^