如果关系上没有索引,SQL查询是否有效?

abc*_*bcd 2 sql database-indexes

GATE1999_2.25

以下哪项是正确的?

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
Run Code Online (Sandbox Code Playgroud)

这是GATE 1999竞争考试题.很容易消除选项A和C.请回答选项B是否正确,为什么?

我已经浏览了多个数据库的SQL章节,也在线搜索过,但我没有找到任何关于索引对SQL查询的影响的参考,这可以回答这个问题.

Mur*_*nik 7

在任何合理的数据库中,您可以创建一个没有索引或键的表(可以隐式生成索引),在其中插入数据并查询它.

请考虑以下内容(语法可能略有不同,具体取决于您使用的RDBMS,尽管我尝试尽可能通用):

CREATE TABLE mytable (mycol INT);

INSERT INTO mytable VALUES (1);

SELECT * FROM mytable;
Run Code Online (Sandbox Code Playgroud)

没有任何索引,查询工作完美.答案B是不正确的.

  • @abcd如果你没有声明一个索引,但是DBMS在内部执行了如果你声明了一个索引它会做的事情,或者你确实声明了一个索引但是DBMS内部执行了如果你没有声明索引它会做什么,那么这是关于它的实现的细节,而不是关于SQL.SQL索引是您在概念上明确或隐式声明的事物,如基表或约束.PRIMARY KEY或UNIQUE约束隐式声明索引,就好像您已明确声明了一个索引. (2认同)