2015-12-09 5 views
2

GATE1999_2.25Будет ли SQL-запрос работать, если нет индексов в отношениях?

Какое из следующего является/верным?

A) An SQL query automatically eliminates duplicates 
B) An SQL query will not work if there are no indexes on the relations 
C) SQL permits attribute names to be repeated in the same relation 
D) None of the above 

Это вопрос экзамена GATE 1999. Легко исключить вариант A & C. Пожалуйста, ответьте, является ли вариант B правильным или нет, и почему?

Я прошел через SQL-раздел нескольких баз данных и также искал в Интернете, но я не нашел ссылки на влияние индексов на SQL-запрос, который может ответить на этот вопрос.

+3

От https://en.wikipedia.org/wiki/SQL: «Стандарт не определяет поведение базы данных в нескольких важных областях (например, индексы, файл hostorage ...), оставляя реализации, чтобы решить, как себя вести .. » – PKG

+0

« Отношение «SQL» может иметь повторяющиеся имена атрибутов. Однако базовая переменная SQL не может содержать одну из них. Например, 'SELECT * FROM t a JOIN t b'. – philipxy

ответ

6

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

Рассмотрим следующий синтаксис (может немного отличаться, в зависимости от СУБД вы используете, хотя я старался быть максимально стандартизован): не

CREATE TABLE mytable (mycol INT); 

INSERT INTO mytable VALUES (1); 

SELECT * FROM mytable; 

Нет индексов вообще, и работы запросов в совершенстве. Ответ B просто неверен.

+0

Ох. На самом деле это была путаница, которую я имел, что неявные индексы всегда создаются. Поскольку индекс всегда создается неявно, эта ситуация с не созданием индекса действительно не появляется. Хотя нам не нужно создавать явный индекс B, неверно! Эти вопросы GATE мало запутывают! Спасибо :) – abcd

+2

@abcd Если вы не объявляете индекс, но СУБД внутренне делает то, что было бы сделано, если бы вы его объявили, или если вы объявляете индекс, но СУБД внутренне делает то, что было бы сделано, если бы вы не объявлено, то это подробная информация о его реализации, а не о SQL. Индекс SQL - это вещь, которую вы объявляете явно или неявно, которая существует концептуально, например, базовая таблица или ограничение. Ограничение PRIMARY KEY или UNIQUE неявно объявляет индекс, как если бы вы заявили его явно. – philipxy

2

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

Если индексов нет, он автоматически создаст индекс.

Нет двух столбцов, имеющих одно и то же имя.

Следовательно, ни один из выше верно

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

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